Engauge Digitizer 2
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
ExportFileAbstractBase Class Reference

Strategy base class for exporting to a file. This class provides common methods. More...

#include <ExportFileAbstractBase.h>

Inheritance diagram for ExportFileAbstractBase:
Inheritance graph
Collaboration diagram for ExportFileAbstractBase:
Collaboration graph

Public Member Functions

 ExportFileAbstractBase ()
 Single constructor.
 
virtual ~ExportFileAbstractBase ()
 

Protected Member Functions

QStringList curvesToInclude (const DocumentModelExportFormat &modelExportOverride, const Document &document, const QStringList &curvesGraphsNames, CurveConnectAs curveConnectAs1, CurveConnectAs curveConnectAs2) const
 Identify curves to include in export. The specified DocumentModelExportFormat overrides same data in Document for previewing window.
 
void destroy2DArray (QVector< QVector< QString * > > &array) const
 Deallocate memory for array.
 
QString gnuplotComment () const
 Gnuplot comment delimiter.
 
void insertLineSeparator (bool isFirst, ExportHeader exportHeader, QTextStream &str) const
 Insert line(s) between successive sets of curves.
 
double linearlyInterpolateYRadiusFromTwoPoints (double xThetaValue, const DocumentModelCoords &modelCoords, const QPointF &posGraphBefore, const QPointF &posGraph) const
 Interpolate (if xThetaValue is between posGraphBefore.x() and posGraph.x()) or extrapolate (if xThetaValue < posGraphBefore.x() or xThetaValue > posGraph.x()) the given x/theta value using the two specified graph points.
 
QString wrapInDoubleQuotesIfNeeded (const DocumentModelExportFormat &modelExportOverride, const QString &valueString) const
 RFC 4180 says if values are delimited by a comma AND a value has commas in it (for locale like English/Switzerland when dealing with numbers) then double quotes are required for the value.
 

Detailed Description

Strategy base class for exporting to a file. This class provides common methods.

Definition at line 25 of file ExportFileAbstractBase.h.

Constructor & Destructor Documentation

◆ ExportFileAbstractBase()

ExportFileAbstractBase::ExportFileAbstractBase ( )

Single constructor.

Definition at line 21 of file ExportFileAbstractBase.cpp.

22{
23}

◆ ~ExportFileAbstractBase()

ExportFileAbstractBase::~ExportFileAbstractBase ( )
virtual

Definition at line 25 of file ExportFileAbstractBase.cpp.

26{
27}

Member Function Documentation

◆ curvesToInclude()

QStringList ExportFileAbstractBase::curvesToInclude ( const DocumentModelExportFormat & modelExportOverride,
const Document & document,
const QStringList & curvesGraphsNames,
CurveConnectAs curveConnectAs1,
CurveConnectAs curveConnectAs2 ) const
protected

Identify curves to include in export. The specified DocumentModelExportFormat overrides same data in Document for previewing window.

Definition at line 29 of file ExportFileAbstractBase.cpp.

34{
35 LOG4CPP_INFO_S ((*mainCat)) << "ExportFileAbstractBase::curvesToInclude";
36
38
39 // Build a list of curves to include by subtracting the excluded curves from the the complete list.
40 // Special case is to use only first included curve if appropriate flag is set
41 QStringList::const_iterator itr;
42 for (itr = curvesGraphsNames.begin(); itr != curvesGraphsNames.end(); itr++) {
43
45
46 if (!modelExportOverride.curveNamesNotExported().contains (curvesGraphName)) {
47
50
51 // Not excluded which means it gets included, but only if it is a function
52 if (curve->curveStyle().lineStyle().curveConnectAs() == curveConnectAs1 ||
53 curve->curveStyle().lineStyle().curveConnectAs() == curveConnectAs2) {
54
56 }
57 }
58 }
59
60 return curvesToInclude;
61}
const int INNER_RADIUS_MIN
#define ENGAUGE_CHECK_PTR(ptr)
#endif
log4cpp::Category * mainCat
Definition Logger.cpp:14
Container for one set of digitized Points.
Definition Curve.h:34
QStringList curveNamesNotExported() const
Get method for curve names not exported.
const Curve * curveForCurveName(const QString &curveName) const
See CurvesGraphs::curveForCurveNames, although this also works for AXIS_CURVE_NAME.
Definition Document.cpp:335
QStringList curvesToInclude(const DocumentModelExportFormat &modelExportOverride, const Document &document, const QStringList &curvesGraphsNames, CurveConnectAs curveConnectAs1, CurveConnectAs curveConnectAs2) const
Identify curves to include in export. The specified DocumentModelExportFormat overrides same data in ...
#define LOG4CPP_INFO_S(logger)
Definition convenience.h:18

◆ destroy2DArray()

void ExportFileAbstractBase::destroy2DArray ( QVector< QVector< QString * > > & array) const
protected

Deallocate memory for array.

Definition at line 63 of file ExportFileAbstractBase.cpp.

64{
65 LOG4CPP_INFO_S ((*mainCat)) << "ExportFileAbstractBase::destroy2DArray";
66
67 int colCount = array.count();
68 int rowCount = array [0].count();
69 for (int row = 0; row < rowCount; row++) {
70 for (int col = 0; col < colCount; col++) {
71 delete array [col] [row];
72 }
73 }
74}

◆ gnuplotComment()

QString ExportFileAbstractBase::gnuplotComment ( ) const
protected

Gnuplot comment delimiter.

Definition at line 76 of file ExportFileAbstractBase.cpp.

77{
78 return QString ("# ");
79}

◆ insertLineSeparator()

void ExportFileAbstractBase::insertLineSeparator ( bool isFirst,
ExportHeader exportHeader,
QTextStream & str ) const
protected

Insert line(s) between successive sets of curves.

Definition at line 81 of file ExportFileAbstractBase.cpp.

84{
85 // Insert line(s) between previous curve and this curve
86 if (!isFirst) {
88 str << "\n\n"; // Gnuplot requires two blank lines between curves
89 } else {
90 str << "\n"; // Single blank line
91 }
92 }
93}
@ EXPORT_HEADER_GNUPLOT

◆ linearlyInterpolateYRadiusFromTwoPoints()

double ExportFileAbstractBase::linearlyInterpolateYRadiusFromTwoPoints ( double xThetaValue,
const DocumentModelCoords & modelCoords,
const QPointF & posGraphBefore,
const QPointF & posGraph ) const
protected

Interpolate (if xThetaValue is between posGraphBefore.x() and posGraph.x()) or extrapolate (if xThetaValue < posGraphBefore.x() or xThetaValue > posGraph.x()) the given x/theta value using the two specified graph points.

Definition at line 95 of file ExportFileAbstractBase.cpp.

99{
100 // X coordinate scaling is linear or log
101 double s;
102 if (modelCoords.coordScaleXTheta() == COORD_SCALE_LINEAR) {
103 s = (xThetaValue - posGraphBefore.x()) / (posGraph.x() - posGraphBefore.x());
104 } else {
105 s = (qLn (xThetaValue) - qLn (posGraphBefore.x())) / (qLn (posGraph.x()) - qLn (posGraphBefore.x()));
106 }
107
108 // Y coordinate scaling is linear or log
109 double yRadius;
110 if (modelCoords.coordScaleYRadius() == COORD_SCALE_LINEAR) {
111 yRadius = (1.0 - s) * posGraphBefore.y() + s * posGraph.y();
112 } else {
113 yRadius = qExp ((1.0 - s) * qLn (posGraphBefore.y()) + s * qLn (posGraph.y()));
114 }
115
116 return yRadius;
117}
@ COORD_SCALE_LINEAR
Definition CoordScale.h:13
CoordScale coordScaleYRadius() const
Get method for linear/log scale on y/radius.
CoordScale coordScaleXTheta() const
Get method for linear/log scale on x/theta.

◆ wrapInDoubleQuotesIfNeeded()

QString ExportFileAbstractBase::wrapInDoubleQuotesIfNeeded ( const DocumentModelExportFormat & modelExportOverride,
const QString & valueString ) const
protected

RFC 4180 says if values are delimited by a comma AND a value has commas in it (for locale like English/Switzerland when dealing with numbers) then double quotes are required for the value.

In other cases this method is a noop

Definition at line 119 of file ExportFileAbstractBase.cpp.

121{
123
124 if ((modelExportOverride.delimiter () == EXPORT_DELIMITER_COMMA) &&
125 (valueString.indexOf (",") >= 0)) {
126
127 // Eliminate ambiguities according to RFC 4180
128 newValueString = QString ("\"%1\"").arg (valueString);
129 }
130
131 return newValueString;
132}
@ EXPORT_DELIMITER_COMMA
ExportDelimiter delimiter() const
Get method for delimiter.

The documentation for this class was generated from the following files: