Engauge Digitizer 2
Loading...
Searching...
No Matches
FormatCoordsUnits.cpp
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 "FormatCoordsUnits.h"
9#include "FormatCoordsUnitsStrategyNonPolarTheta.h"
10#include "FormatCoordsUnitsStrategyPolarTheta.h"
11#include "Logger.h"
12#include "MainWindowModel.h"
13#include "Transformation.h"
14
15const bool IS_X_THETA = true;
16const bool IS_NOT_X_THETA = false;
17
19{
20 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::FormatCoordsUnits";
21}
22
23void FormatCoordsUnits::formattedToUnformatted (const QString &xThetaFormatted,
24 const QString &yRadiusFormatted,
25 const DocumentModelCoords &modelCoords,
26 const MainWindowModel &mainWindowModel,
27 double &xThetaUnformatted,
28 double &yRadiusUnformatted) const
29{
30 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::formattedToUnformatted";
31
34
35 if (modelCoords.coordsType() == COORDS_TYPE_CARTESIAN) {
36
37 xThetaUnformatted = formatNonPolarTheta.formattedToUnformatted (xThetaFormatted,
38 mainWindowModel.locale(),
39 modelCoords.coordUnitsX(),
40 modelCoords.coordUnitsDate(),
41 modelCoords.coordUnitsTime());
42 yRadiusUnformatted = formatNonPolarTheta.formattedToUnformatted (yRadiusFormatted,
43 mainWindowModel.locale(),
44 modelCoords.coordUnitsY(),
45 modelCoords.coordUnitsDate(),
46 modelCoords.coordUnitsTime());
47
48 } else {
49
50 xThetaUnformatted = formatPolarTheta.formattedToUnformatted (xThetaFormatted,
51 mainWindowModel.locale(),
52 modelCoords.coordUnitsTheta());
53 yRadiusUnformatted = formatNonPolarTheta.formattedToUnformatted (yRadiusFormatted,
54 mainWindowModel.locale(),
55 modelCoords.coordUnitsRadius(),
56 modelCoords.coordUnitsDate(),
57 modelCoords.coordUnitsTime());
58
59 }
60}
61
62void FormatCoordsUnits::unformattedToFormatted (double xThetaUnformatted,
63 double yRadiusUnformatted,
64 const DocumentModelCoords &modelCoords,
65 const MainWindowModel &mainWindowModel,
66 QString &xThetaFormatted,
67 QString &yRadiusFormatted,
68 const Transformation &transformation) const
69{
70 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::unformattedToFormatted";
71
74
75 if (modelCoords.coordsType() == COORDS_TYPE_CARTESIAN) {
76
77 xThetaFormatted = formatNonPolarTheta.unformattedToFormatted (xThetaUnformatted,
78 mainWindowModel.locale(),
79 modelCoords.coordUnitsX(),
80 modelCoords.coordUnitsDate(),
81 modelCoords.coordUnitsTime(),
82 IS_X_THETA,
83 transformation,
84 yRadiusUnformatted);
85 yRadiusFormatted = formatNonPolarTheta.unformattedToFormatted (yRadiusUnformatted,
86 mainWindowModel.locale(),
87 modelCoords.coordUnitsY(),
88 modelCoords.coordUnitsDate(),
89 modelCoords.coordUnitsTime(),
90 IS_NOT_X_THETA,
91 transformation,
92 xThetaUnformatted);
93
94 } else {
95
96 xThetaFormatted = formatPolarTheta.unformattedToFormatted (xThetaUnformatted,
97 mainWindowModel.locale(),
98 modelCoords.coordUnitsTheta(),
99 transformation,
100 yRadiusUnformatted);
101 yRadiusFormatted = formatNonPolarTheta.unformattedToFormatted (yRadiusUnformatted,
102 mainWindowModel.locale(),
103 modelCoords.coordUnitsRadius(),
104 modelCoords.coordUnitsDate(),
105 modelCoords.coordUnitsTime(),
106 IS_NOT_X_THETA,
107 transformation,
108 xThetaUnformatted);
109 }
110}
Model for DlgSettingsCoords and CmdSettingsCoords.
CoordUnitsNonPolarTheta coordUnitsRadius() const
Get method for radius units.
CoordUnitsPolarTheta coordUnitsTheta() const
Get method for theta unit.
CoordUnitsNonPolarTheta coordUnitsY() const
Get method for x units.
CoordUnitsTime coordUnitsTime() const
Get method for time format when used.
CoordUnitsNonPolarTheta coordUnitsX() const
Get method for x units.
CoordsType coordsType() const
Get method for coordinates type.
CoordUnitsDate coordUnitsDate() const
Get method for date format when used.
Format conversions between unformatted and formatted for CoordUnitsNonPolarTheta.
QString unformattedToFormatted(double valueUnformatted, const QLocale &locale, CoordUnitsNonPolarTheta coordUnits, CoordUnitsDate coordUnitsDate, CoordUnitsTime coordUnitsTime, bool isXTheta, const Transformation &transformation, double valueUnformattedOther) const
Convert simple unformatted number to formatted string.
double formattedToUnformatted(const QString &string, const QLocale &locale, CoordUnitsNonPolarTheta coordUnits, CoordUnitsDate coordUnitsDate, CoordUnitsTime coordUnitsTime) const
Convert formatted string to simple unformatted number.
Format conversions between unformatted and formatted for CoordUnitsStrategyPolarTheta.
double formattedToUnformatted(const QString &string, const QLocale &locale, CoordUnitsPolarTheta coordUnits) const
Convert formatted string to simple unformatted number.
QString unformattedToFormatted(double valueUnformatted, const QLocale &locale, CoordUnitsPolarTheta coordUnits, const Transformation &transformation, double valueUnformattedOther) const
Convert simple unformatted number to formatted string.
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.
void unformattedToFormatted(double xThetaUnformatted, double yRadiusUnformatted, const DocumentModelCoords &modelCoords, 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...
FormatCoordsUnits()
Single constructor.
Model for DlgSettingsMainWindow.
QLocale locale() const
Get method for locale.
Affine transformation between screen and graph coordinates, based on digitized axis points.