00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "controler.hh"
00026 #include "view-precompile.hh"
00027 #include "precompile.hh"
00028 #include "parameter-aimed-point.hh"
00029 #include "parameter-axis.hh"
00030 #include "parameter-grid.hh"
00031 using namespace std;
00032
00033 CParameterAimedPosition* CControler::getParameterAimedPosition(TViewId AViewId) const
00034 {
00035 assert( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
00036 return FViews[AViewId]->getParameterAimedPosition();
00037 }
00038
00039 CParameterDrawing* CControler::getParameterDrawing(TViewId AViewId) const
00040 {
00041 assert( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
00042 return FViews[AViewId]->getParameterDrawing();
00043 }
00044
00045 CParameterEyePosition* CControler::getParameterEyePosition(TViewId AViewId) const
00046 {
00047 assert( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
00048 return FViews[AViewId]->getParameterEyePosition();
00049 }
00050
00051 CParameter* CControler::getParameterPrecompile(TViewId AViewId,
00052 TPrecompile APrecompile) const
00053 {
00054 assert ( 0<=AViewId && AViewId<FViews.size() && FViews[AViewId]!=NULL);
00055
00056 CPrecompile* precomp = FViews[AViewId]->findPrecompile(APrecompile);
00057 if ( precomp==NULL ) return NULL;
00058
00059 return precomp->getParameter();
00060 }
00061
00062 CParameterAimedPoint* CControler::getParameterAimedPoint(TViewId AViewId) const
00063 { return static_cast<CParameterAimedPoint*>
00064 (getParameterPrecompile(AViewId, PRECOMPILE_AIMED_POINT));
00065 }
00066
00067 CParameterAxis* CControler::getParameterAxis(TViewId AViewId) const
00068 { return static_cast<CParameterAxis*>
00069 (getParameterPrecompile(AViewId, PRECOMPILE_AXIS));
00070 }
00071
00072 CParameterGrid* CControler::getParameterGrid(TViewId AViewId) const
00073 { return static_cast<CParameterGrid*>
00074 (getParameterPrecompile(AViewId, PRECOMPILE_GRID));
00075 }
00076
00077 void CControler::saveOnePrecompileParameter(TViewId AViewId,
00078 TPrecompile APrecompileType,
00079 ostream& os)
00080 {
00081 CParameter* parameter = getParameterPrecompile(AViewId, APrecompileType);
00082
00083 if (parameter!=NULL)
00084 {
00085 parameter->save(os);
00086 }
00087 else
00088 {
00089 viewAddPrecompile(AViewId, APrecompileType);
00090
00091 parameter = getParameterPrecompile(AViewId, APrecompileType);
00092 parameter->save(os);
00093
00094 viewRemovePrecompile(AViewId, APrecompileType);
00095 }
00096 }
00097
00098 void CControler::loadOnePrecompileParameter(TViewId AViewId,
00099 TPrecompile APrecompileType,
00100 istream& is)
00101 {
00102 CParameter* parameter = getParameterPrecompile(AViewId, APrecompileType);
00103
00104 if (parameter!=NULL)
00105 {
00106 parameter->load(is);
00107 }
00108 else
00109 {
00110 viewAddPrecompile(AViewId, APrecompileType);
00111
00112 parameter = getParameterPrecompile(AViewId, APrecompileType);
00113 parameter->load(is);
00114
00115 viewRemovePrecompile(AViewId, APrecompileType);
00116 }
00117 }
00118
00119 void CControler::saveAllParameters(TViewId AViewId)
00120 {
00121 char fileName[256];
00122 sprintf(fileName, "%s/model-parameters.txt", FConfigDirectory.c_str());
00123
00124 ofstream os(fileName);
00125
00126 if (!os.good())
00127 return;
00128
00129
00130 getParameterAimedPosition(AViewId)->save(os);
00131 getParameterDrawing(AViewId)->save(os);
00132 getParameterEyePosition(AViewId)->save(os);
00133
00134
00135 TPrecompile aprecompile;
00136 for (aprecompile = FIRST_PRECOMPILE_CONTROLER;
00137 aprecompile < FLastPrecompile; ++aprecompile)
00138 {
00139 saveOnePrecompileParameter(AViewId, aprecompile, os);
00140 }
00141
00142 os.close();
00143 }
00144
00145 void CControler::loadAllParameters(TViewId AViewId)
00146 {
00147 char fileName[256];
00148 sprintf(fileName, "%s/model-parameters.txt", FConfigDirectory.c_str());
00149
00150 ifstream is(fileName);
00151
00152 if (!is.good())
00153 return;
00154
00155
00156 getParameterAimedPosition(AViewId)->load(is);
00157 getParameterDrawing(AViewId)->load(is);
00158 getParameterEyePosition(AViewId)->load(is);
00159
00160
00161 TPrecompile aprecompile;
00162 for (aprecompile = FIRST_PRECOMPILE_CONTROLER;
00163 aprecompile < FLastPrecompile; ++aprecompile)
00164 {
00165 loadOnePrecompileParameter(AViewId, aprecompile, is);
00166 }
00167
00168 is.close();
00169 }
00170
00171 void CControler::reinitAllParameters(TViewId AViewId)
00172 {
00173
00174 getParameterAimedPosition(AViewId)->reinit();
00175 getParameterDrawing(AViewId)->reinit();
00176 getParameterEyePosition(AViewId)->reinit();
00177
00178
00179 CParameter* parameter;
00180 TPrecompile aprecompile;
00181 for (aprecompile = FIRST_PRECOMPILE_CONTROLER;
00182 aprecompile < FLastPrecompile; ++aprecompile)
00183 {
00184 parameter = getParameterPrecompile(AViewId, aprecompile);
00185 if (parameter!=NULL) parameter->reinit();
00186 }
00187 }
00188