00001
00002
00003
00004
00005
00006
00007 #include "DocumentModelCoords.h"
00008 #include "DocumentModelGeneral.h"
00009 #include "FormatCoordsUnits.h"
00010 #include "FormatCoordsUnitsStrategyNonPolarTheta.h"
00011 #include "FormatCoordsUnitsStrategyPolarTheta.h"
00012 #include "Logger.h"
00013 #include "MainWindowModel.h"
00014 #include "Transformation.h"
00015
00016 const bool IS_X_THETA = true;
00017 const bool IS_NOT_X_THETA = false;
00018
00019 FormatCoordsUnits::FormatCoordsUnits()
00020 {
00021 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::FormatCoordsUnits";
00022 }
00023
00024 void FormatCoordsUnits::formattedToUnformatted (const QString &xThetaFormatted,
00025 const QString &yRadiusFormatted,
00026 const DocumentModelCoords &modelCoords,
00027 const MainWindowModel &mainWindowModel,
00028 double &xThetaUnformatted,
00029 double &yRadiusUnformatted) const
00030 {
00031 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::formattedToUnformatted";
00032
00033 FormatCoordsUnitsStrategyNonPolarTheta formatNonPolarTheta;
00034 FormatCoordsUnitsStrategyPolarTheta formatPolarTheta;
00035
00036 if (modelCoords.coordsType() == COORDS_TYPE_CARTESIAN) {
00037
00038 xThetaUnformatted = formatNonPolarTheta.formattedToUnformatted (xThetaFormatted,
00039 mainWindowModel.locale(),
00040 modelCoords.coordUnitsX(),
00041 modelCoords.coordUnitsDate(),
00042 modelCoords.coordUnitsTime());
00043 yRadiusUnformatted = formatNonPolarTheta.formattedToUnformatted (yRadiusFormatted,
00044 mainWindowModel.locale(),
00045 modelCoords.coordUnitsY(),
00046 modelCoords.coordUnitsDate(),
00047 modelCoords.coordUnitsTime());
00048
00049 } else {
00050
00051 xThetaUnformatted = formatPolarTheta.formattedToUnformatted (xThetaFormatted,
00052 mainWindowModel.locale(),
00053 modelCoords.coordUnitsTheta());
00054 yRadiusUnformatted = formatNonPolarTheta.formattedToUnformatted (yRadiusFormatted,
00055 mainWindowModel.locale(),
00056 modelCoords.coordUnitsRadius(),
00057 modelCoords.coordUnitsDate(),
00058 modelCoords.coordUnitsTime());
00059
00060 }
00061 }
00062
00063 void FormatCoordsUnits::unformattedToFormatted (double xThetaUnformatted,
00064 double yRadiusUnformatted,
00065 const DocumentModelCoords &modelCoords,
00066 const DocumentModelGeneral &modelGeneral,
00067 const MainWindowModel &mainWindowModel,
00068 QString &xThetaFormatted,
00069 QString &yRadiusFormatted,
00070 const Transformation &transformation) const
00071 {
00072 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnits::unformattedToFormatted";
00073
00074 FormatCoordsUnitsStrategyNonPolarTheta formatNonPolarTheta;
00075 FormatCoordsUnitsStrategyPolarTheta formatPolarTheta;
00076
00077 if (modelCoords.coordsType() == COORDS_TYPE_CARTESIAN) {
00078
00079 xThetaFormatted = formatNonPolarTheta.unformattedToFormatted (xThetaUnformatted,
00080 mainWindowModel.locale(),
00081 modelCoords.coordUnitsX(),
00082 modelCoords.coordUnitsDate(),
00083 modelCoords.coordUnitsTime(),
00084 IS_X_THETA,
00085 modelGeneral,
00086 transformation,
00087 yRadiusUnformatted);
00088 yRadiusFormatted = formatNonPolarTheta.unformattedToFormatted (yRadiusUnformatted,
00089 mainWindowModel.locale(),
00090 modelCoords.coordUnitsY(),
00091 modelCoords.coordUnitsDate(),
00092 modelCoords.coordUnitsTime(),
00093 IS_NOT_X_THETA,
00094 modelGeneral,
00095 transformation,
00096 xThetaUnformatted);
00097
00098 } else {
00099
00100 xThetaFormatted = formatPolarTheta.unformattedToFormatted (xThetaUnformatted,
00101 mainWindowModel.locale(),
00102 modelCoords.coordUnitsTheta(),
00103 modelGeneral,
00104 transformation,
00105 yRadiusUnformatted);
00106 yRadiusFormatted = formatNonPolarTheta.unformattedToFormatted (yRadiusUnformatted,
00107 mainWindowModel.locale(),
00108 modelCoords.coordUnitsRadius(),
00109 modelCoords.coordUnitsDate(),
00110 modelCoords.coordUnitsTime(),
00111 IS_NOT_X_THETA,
00112 modelGeneral,
00113 transformation,
00114 xThetaUnformatted);
00115 }
00116 }