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