Engauge Digitizer  2
FormatCoordsUnits.cpp
Go to the documentation of this file.
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #include "DocumentModelCoords.h"
8 #include "DocumentModelGeneral.h"
9 #include "FormatCoordsUnits.h"
12 #include "Logger.h"
13 #include "MainWindowModel.h"
14 #include "Transformation.h"
15 
16 const bool IS_X_THETA = true;
17 const bool IS_NOT_X_THETA = false;
18 
20 {
21  LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::FormatCoordsUnits";
22 }
23 
24 void FormatCoordsUnits::formattedToUnformatted (const QString &xThetaFormatted,
25  const QString &yRadiusFormatted,
26  const DocumentModelCoords &modelCoords,
27  const MainWindowModel &mainWindowModel,
28  double &xThetaUnformatted,
29  double &yRadiusUnformatted) const
30 {
31  LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::formattedToUnformatted";
32 
33  FormatCoordsUnitsStrategyNonPolarTheta formatNonPolarTheta;
34  FormatCoordsUnitsStrategyPolarTheta formatPolarTheta;
35 
36  if (modelCoords.coordsType() == COORDS_TYPE_CARTESIAN) {
37 
38  xThetaUnformatted = formatNonPolarTheta.formattedToUnformatted (xThetaFormatted,
39  mainWindowModel.locale(),
40  modelCoords.coordUnitsX(),
41  modelCoords.coordUnitsDate(),
42  modelCoords.coordUnitsTime());
43  yRadiusUnformatted = formatNonPolarTheta.formattedToUnformatted (yRadiusFormatted,
44  mainWindowModel.locale(),
45  modelCoords.coordUnitsY(),
46  modelCoords.coordUnitsDate(),
47  modelCoords.coordUnitsTime());
48 
49  } else {
50 
51  xThetaUnformatted = formatPolarTheta.formattedToUnformatted (xThetaFormatted,
52  mainWindowModel.locale(),
53  modelCoords.coordUnitsTheta());
54  yRadiusUnformatted = formatNonPolarTheta.formattedToUnformatted (yRadiusFormatted,
55  mainWindowModel.locale(),
56  modelCoords.coordUnitsRadius(),
57  modelCoords.coordUnitsDate(),
58  modelCoords.coordUnitsTime());
59 
60  }
61 }
62 
63 void FormatCoordsUnits::unformattedToFormatted (double xThetaUnformatted,
64  double yRadiusUnformatted,
65  const DocumentModelCoords &modelCoords,
66  const DocumentModelGeneral &modelGeneral,
67  const MainWindowModel &mainWindowModel,
68  QString &xThetaFormatted,
69  QString &yRadiusFormatted,
70  const Transformation &transformation) const
71 {
72  LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::unformattedToFormatted";
73 
74  FormatCoordsUnitsStrategyNonPolarTheta formatNonPolarTheta;
75  FormatCoordsUnitsStrategyPolarTheta formatPolarTheta;
76 
77  if (modelCoords.coordsType() == COORDS_TYPE_CARTESIAN) {
78 
79  xThetaFormatted = formatNonPolarTheta.unformattedToFormatted (xThetaUnformatted,
80  mainWindowModel.locale(),
81  modelCoords.coordUnitsX(),
82  modelCoords.coordUnitsDate(),
83  modelCoords.coordUnitsTime(),
84  IS_X_THETA,
85  modelGeneral,
86  transformation,
87  yRadiusUnformatted);
88  yRadiusFormatted = formatNonPolarTheta.unformattedToFormatted (yRadiusUnformatted,
89  mainWindowModel.locale(),
90  modelCoords.coordUnitsY(),
91  modelCoords.coordUnitsDate(),
92  modelCoords.coordUnitsTime(),
94  modelGeneral,
95  transformation,
96  xThetaUnformatted);
97 
98  } else {
99 
100  xThetaFormatted = formatPolarTheta.unformattedToFormatted (xThetaUnformatted,
101  mainWindowModel.locale(),
102  modelCoords.coordUnitsTheta(),
103  modelGeneral,
104  transformation,
105  yRadiusUnformatted);
106  yRadiusFormatted = formatNonPolarTheta.unformattedToFormatted (yRadiusUnformatted,
107  mainWindowModel.locale(),
108  modelCoords.coordUnitsRadius(),
109  modelCoords.coordUnitsDate(),
110  modelCoords.coordUnitsTime(),
112  modelGeneral,
113  transformation,
114  xThetaUnformatted);
115  }
116 }
FormatCoordsUnits::formattedToUnformatted
void formattedToUnformatted(const QString &xThetaFormatted, const QString &yRadiusFormatted, const DocumentModelCoords &modelCoords, const MainWindowModel &mainWindowModel, double &xThetaUnformatted, double &yRadiusUnformatted) const
Convert formatted string to unformatted numeric value.
Definition: FormatCoordsUnits.cpp:24
FormatCoordsUnitsStrategyPolarTheta::formattedToUnformatted
double formattedToUnformatted(const QString &string, const QLocale &locale, CoordUnitsPolarTheta coordUnits) const
Convert formatted string to simple unformatted number.
Definition: FormatCoordsUnitsStrategyPolarTheta.cpp:18
DocumentModelGeneral.h
DocumentModelCoords::coordUnitsY
CoordUnitsNonPolarTheta coordUnitsY() const
Get method for x units.
Definition: DocumentModelCoords.cpp:124
FormatCoordsUnitsStrategyNonPolarTheta::unformattedToFormatted
QString unformattedToFormatted(double valueUnformatted, const QLocale &locale, CoordUnitsNonPolarTheta coordUnits, CoordUnitsDate coordUnitsDate, CoordUnitsTime coordUnitsTime, bool isXTheta, const DocumentModelGeneral &modelGeneral, const Transformation &transformation, double valueUnformattedOther) const
Convert simple unformatted number to formatted string.
Definition: FormatCoordsUnitsStrategyNonPolarTheta.cpp:63
MainWindowModel.h
FormatCoordsUnits::FormatCoordsUnits
FormatCoordsUnits()
Single constructor.
Definition: FormatCoordsUnits.cpp:19
FormatCoordsUnitsStrategyPolarTheta
Format conversions between unformatted and formatted for CoordUnitsStrategyPolarTheta.
Definition: FormatCoordsUnitsStrategyPolarTheta.h:18
IS_X_THETA
const bool IS_X_THETA
Definition: FormatCoordsUnits.cpp:16
DocumentModelCoords::coordUnitsRadius
CoordUnitsNonPolarTheta coordUnitsRadius() const
Get method for radius units.
Definition: DocumentModelCoords.cpp:104
Transformation
Affine transformation between screen and graph coordinates, based on digitized axis points.
Definition: Transformation.h:30
FormatCoordsUnitsStrategyPolarTheta.h
MainWindowModel
Model for DlgSettingsMainWindow.
Definition: MainWindowModel.h:29
Transformation.h
DocumentModelGeneral
Model for DlgSettingsGeneral and CmdSettingsGeneral.
Definition: DocumentModelGeneral.h:15
DocumentModelCoords::coordUnitsDate
CoordUnitsDate coordUnitsDate() const
Get method for date format when used.
Definition: DocumentModelCoords.cpp:99
Logger.h
FormatCoordsUnits::unformattedToFormatted
void unformattedToFormatted(double xThetaUnformatted, double yRadiusUnformatted, const DocumentModelCoords &modelCoords, const DocumentModelGeneral &modelGeneral, const MainWindowModel &mainWindowModel, QString &xThetaFormatted, QString &yRadiusFormatted, const Transformation &transformation) const
Convert unformatted numeric value to formatted string. Transformation is used to determine best resol...
Definition: FormatCoordsUnits.cpp:63
FormatCoordsUnits.h
COORDS_TYPE_CARTESIAN
Definition: CoordsType.h:15
FormatCoordsUnitsStrategyNonPolarTheta::formattedToUnformatted
double formattedToUnformatted(const QString &string, const QLocale &locale, CoordUnitsNonPolarTheta coordUnits, CoordUnitsDate coordUnitsDate, CoordUnitsTime coordUnitsTime) const
Convert formatted string to simple unformatted number.
Definition: FormatCoordsUnitsStrategyNonPolarTheta.cpp:20
MainWindowModel::locale
QLocale locale() const
Get method for locale.
Definition: MainWindowModel.cpp:121
DocumentModelCoords::coordUnitsX
CoordUnitsNonPolarTheta coordUnitsX() const
Get method for x units.
Definition: DocumentModelCoords.cpp:119
IS_NOT_X_THETA
const bool IS_NOT_X_THETA
Definition: FormatCoordsUnits.cpp:17
mainCat
log4cpp::Category * mainCat
Definition: Logger.cpp:14
FormatCoordsUnitsStrategyNonPolarTheta.h
FormatCoordsUnitsStrategyPolarTheta::unformattedToFormatted
QString unformattedToFormatted(double valueUnformatted, const QLocale &locale, CoordUnitsPolarTheta coordUnits, const DocumentModelGeneral &modelGeneral, const Transformation &transformation, double valueUnformattedOther) const
Convert simple unformatted number to formatted string.
Definition: FormatCoordsUnitsStrategyPolarTheta.cpp:53
FormatCoordsUnitsStrategyNonPolarTheta
Format conversions between unformatted and formatted for CoordUnitsNonPolarTheta.
Definition: FormatCoordsUnitsStrategyNonPolarTheta.h:20
LOG4CPP_DEBUG_S
#define LOG4CPP_DEBUG_S(logger)
Definition: convenience.h:20
DocumentModelCoords::coordUnitsTime
CoordUnitsTime coordUnitsTime() const
Get method for time format when used.
Definition: DocumentModelCoords.cpp:114
DocumentModelCoords
Model for DlgSettingsCoords and CmdSettingsCoords.
Definition: DocumentModelCoords.h:19
DocumentModelCoords::coordsType
CoordsType coordsType() const
Get method for coordinates type.
Definition: DocumentModelCoords.cpp:94
DocumentModelCoords.h
DocumentModelCoords::coordUnitsTheta
CoordUnitsPolarTheta coordUnitsTheta() const
Get method for theta unit.
Definition: DocumentModelCoords.cpp:109