Engauge Digitizer  2
FormatCoordsUnitsStrategyNonPolarTheta.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 "DocumentModelGeneral.h"
8 #include "EngaugeAssert.h"
10 #include "FormatDateTime.h"
12 #include "Logger.h"
13 #include <QLocale>
14 #include "Transformation.h"
15 
17 {
18 }
19 
21  const QLocale &locale,
22  CoordUnitsNonPolarTheta coordUnits,
23  CoordUnitsDate coordUnitsDate,
24  CoordUnitsTime coordUnitsTime) const
25 {
26  //LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::formattedToUnformatted";
27 
28  double value;
29 
30  switch (coordUnits) {
32  {
33  FormatDateTime format;
34  ENGAUGE_ASSERT (format.parseInput (coordUnitsDate,
35  coordUnitsTime,
36  string,
37  value) == QValidator::Acceptable);
38  }
39  break;
40 
43  {
45  ENGAUGE_ASSERT (format.parseInput (string,
46  value) == QValidator::Acceptable);
47  }
48  break;
49 
51  value = locale.toDouble (string);
52  break;
53 
54  default:
55  LOG4CPP_ERROR_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::formattedToFormatted";
56  ENGAUGE_ASSERT (false);
57  break;
58  }
59 
60  return value;
61 }
62 
64  const QLocale &locale,
65  CoordUnitsNonPolarTheta coordUnits,
66  CoordUnitsDate coordUnitsDate,
67  CoordUnitsTime coordUnitsTime,
68  bool isXTheta,
69  const DocumentModelGeneral &modelGeneral,
70  const Transformation &transformation,
71  double valueUnformattedOther) const
72 {
73  //LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::unformattedToFormatted";
74 
75  const char FORMAT ('g');
76 
77  QString valueFormatted;
78 
79  switch (coordUnits) {
81  {
82  FormatDateTime format;
83  valueFormatted = format.formatOutput (coordUnitsDate,
84  coordUnitsTime,
85  valueUnformatted);
86  }
87  break;
88 
91  {
93  valueFormatted = format.formatOutput (coordUnits,
94  valueUnformatted,
95  isXTheta);
96  }
97  break;
98 
100  valueFormatted = locale.toString (valueUnformatted,
101  FORMAT,
102  precisionDigitsForRawNumber (valueUnformatted,
103  valueUnformattedOther,
104  isXTheta,
105  modelGeneral,
106  transformation));
107  break;
108 
109  default:
110  LOG4CPP_ERROR_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::unformattedToFormatted";
111  ENGAUGE_ASSERT (false);
112  break;
113  }
114 
115  return valueFormatted;
116 }
Model for DlgSettingsGeneral and CmdSettingsGeneral.
double formattedToUnformatted(const QString &string, const QLocale &locale, CoordUnitsNonPolarTheta coordUnits, CoordUnitsDate coordUnitsDate, CoordUnitsTime coordUnitsTime) const
Convert formatted string to simple unformatted number.
#define LOG4CPP_ERROR_S(logger)
Definition: convenience.h:12
Affine transformation between screen and graph coordinates, based on digitized axis points.
Angular units according to CoordUnitsNonPolarTheta.
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.
int precisionDigitsForRawNumber(double valueUnformatted, double valueUnformattedOther, bool isXTheta, const DocumentModelGeneral &modelGeneral, const Transformation &transformation) const
Compute precision for outputting an unformatted value, consistent with the resolution at the point wh...
log4cpp::Category * mainCat
Definition: Logger.cpp:14
CoordUnitsTime
QValidator::State parseInput(CoordUnitsDate coordUnitsDate, CoordUnitsTime coordUnitsTime, const QString &stringUntrimmed, double &value) const
Parse the input string into a time value.
CoordUnitsDate
CoordUnitsNonPolarTheta
Input parsing and output formatting for date/time values.
QValidator::State parseInput(const QString &stringUntrimmed, double &value) const
Parse the input string into a number value.
QString formatOutput(CoordUnitsNonPolarTheta coordUnits, double value, bool isXTheta) const
Format the degrees/minutes/seconds value. Distinguishing x/theta versus y/radius is required for N/S/...
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) define ENGAUGE...
Definition: EngaugeAssert.h:20
QString formatOutput(CoordUnitsDate coordUnitsDate, CoordUnitsTime coordUnitsTime, double value) const
Format the date/time value according to date/time format settings.