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-gmap-types.hh"
00026 #include "parameters-gmap-default-values.hh"
00027 #include "parameter-sew.hh"
00028 #include <cassert>
00029 #include <cstring>
00030 using namespace std;
00031 using namespace GMap3d;
00032
00033 CParameterSew::CParameterSew(int ANbRef) :
00034 CParameter(ANbRef)
00035 {
00036 reinit();
00037 }
00038
00039 CParameterSew::CParameterSew(const CParameterSew & AParam) :
00040 CParameter(AParam)
00041 {
00042 for (int i=0; i<4; ++i)
00043 {
00044 FLWSew[i] = AParam.FLWSew[i];
00045 FSewPosCoef[i] = AParam.FSewPosCoef[i];
00046 FDisplayAlpha[i] = AParam.FDisplayAlpha[i];
00047 setCLSew(i, AParam.getCLSew(i));
00048 }
00049 }
00050
00051 CParameterSew::~CParameterSew()
00052 {}
00053
00054 CParameter * CParameterSew::copy() const
00055 { return new CParameterSew(*this); }
00056
00057 void CParameterSew::save(ostream& AStream)
00058 { AStream<<(*this); }
00059
00060 void CParameterSew::load(istream& AStream)
00061 { AStream>>(*this); }
00062
00063 void CParameterSew::reinit()
00064 {
00065 FLWSew[0] = DEFAULT_SEW0_LINE_WIDTH;
00066 FLWSew[1] = DEFAULT_SEW1_LINE_WIDTH;
00067 FLWSew[2] = DEFAULT_SEW2_LINE_WIDTH;
00068 FLWSew[3] = DEFAULT_SEW3_LINE_WIDTH;
00069
00070 FSewPosCoef[0] = DEFAULT_SEW0_POSITION;
00071 FSewPosCoef[1] = DEFAULT_SEW1_POSITION;
00072 FSewPosCoef[2] = DEFAULT_SEW2_POSITION;
00073 FSewPosCoef[3] = DEFAULT_SEW3_POSITION;
00074
00075 FDisplayAlpha[0] = DEFAULT_SEW0_DISPLAY;
00076 FDisplayAlpha[1] = DEFAULT_SEW1_DISPLAY;
00077 FDisplayAlpha[2] = DEFAULT_SEW2_DISPLAY;
00078 FDisplayAlpha[3] = DEFAULT_SEW3_DISPLAY;
00079
00080 setCLSew(0, DEFAULT_SEW0_COLOR_0, DEFAULT_SEW0_COLOR_1, DEFAULT_SEW0_COLOR_2);
00081 setCLSew(1, DEFAULT_SEW1_COLOR_0, DEFAULT_SEW1_COLOR_1, DEFAULT_SEW1_COLOR_2);
00082 setCLSew(2, DEFAULT_SEW2_COLOR_0, DEFAULT_SEW2_COLOR_1, DEFAULT_SEW2_COLOR_2);
00083 setCLSew(3, DEFAULT_SEW3_COLOR_0, DEFAULT_SEW3_COLOR_1, DEFAULT_SEW3_COLOR_2);
00084
00085 putAllNeedToUpdate();
00086 }
00087
00088 namespace GMap3d
00089 {
00090
00091 ostream& operator<<(ostream& AStream, const CParameterSew & AParameter)
00092 {
00093 AStream<<"CParameterSew:"<<endl;
00094
00095 AStream<<" LineWidth0: "<<AParameter.FLWSew[0]<<endl;
00096 AStream<<" LineWidth1: "<<AParameter.FLWSew[1]<<endl;
00097 AStream<<" LineWidth2: "<<AParameter.FLWSew[2]<<endl;
00098 AStream<<" LineWidth3: "<<AParameter.FLWSew[3]<<endl;
00099
00100 AStream<<" PosCoef0: "<<AParameter.FSewPosCoef[0]<<endl;
00101 AStream<<" PosCoef1: "<<AParameter.FSewPosCoef[1]<<endl;
00102 AStream<<" PosCoef2: "<<AParameter.FSewPosCoef[2]<<endl;
00103 AStream<<" PosCoef3: "<<AParameter.FSewPosCoef[3]<<endl;
00104
00105 AStream<<" Display0: "<<AParameter.FDisplayAlpha[0]<<endl;
00106 AStream<<" Display1: "<<AParameter.FDisplayAlpha[1]<<endl;
00107 AStream<<" Display2: "<<AParameter.FDisplayAlpha[2]<<endl;
00108 AStream<<" Display3: "<<AParameter.FDisplayAlpha[3]<<endl;
00109
00110 AStream<<" Color0: "<<AParameter.FCLSew[0][0]<<" "
00111 <<AParameter.FCLSew[0][1]<<" "<<AParameter.FCLSew[0][2]<<endl;
00112 AStream<<" Color1: "<<AParameter.FCLSew[1][0]<<" "
00113 <<AParameter.FCLSew[1][1]<<" "<<AParameter.FCLSew[1][2]<<endl;
00114 AStream<<" Color2: "<<AParameter.FCLSew[2][0]<<" "
00115 <<AParameter.FCLSew[2][1]<<" "<<AParameter.FCLSew[2][2]<<endl;
00116 AStream<<" Color3: "<<AParameter.FCLSew[3][0]<<" "
00117 <<AParameter.FCLSew[3][1]<<" "<<AParameter.FCLSew[3][2]<<endl;
00118
00119 AStream<<endl;
00120
00121 return AStream;
00122 }
00123
00124 istream& operator>>(istream& AStream, CParameterSew & AParameter)
00125 {
00126 char tmp[256];
00127
00128 AStream>>tmp; assert ( !strcmp(tmp, "CParameterSew:") );
00129
00130 AStream>>tmp; assert ( !strcmp(tmp, "LineWidth0:") );
00131 AStream>>AParameter.FLWSew[0];
00132 AStream>>tmp; assert ( !strcmp(tmp, "LineWidth1:") );
00133 AStream>>AParameter.FLWSew[1];
00134 AStream>>tmp; assert ( !strcmp(tmp, "LineWidth2:") );
00135 AStream>>AParameter.FLWSew[2];
00136 AStream>>tmp; assert ( !strcmp(tmp, "LineWidth3:") );
00137 AStream>>AParameter.FLWSew[3];
00138
00139 AStream>>tmp; assert ( !strcmp(tmp, "PosCoef0:") );
00140 AStream>>AParameter.FSewPosCoef[0];
00141 AStream>>tmp; assert ( !strcmp(tmp, "PosCoef1:") );
00142 AStream>>AParameter.FSewPosCoef[1];
00143 AStream>>tmp; assert ( !strcmp(tmp, "PosCoef2:") );
00144 AStream>>AParameter.FSewPosCoef[2];
00145 AStream>>tmp; assert ( !strcmp(tmp, "PosCoef3:") );
00146 AStream>>AParameter.FSewPosCoef[3];
00147
00148 AStream>>tmp; assert ( !strcmp(tmp, "Display0:") );
00149 AStream>>AParameter.FDisplayAlpha[0];
00150 AStream>>tmp; assert ( !strcmp(tmp, "Display1:") );
00151 AStream>>AParameter.FDisplayAlpha[1];
00152 AStream>>tmp; assert ( !strcmp(tmp, "Display2:") );
00153 AStream>>AParameter.FDisplayAlpha[2];
00154 AStream>>tmp; assert ( !strcmp(tmp, "Display3:") );
00155 AStream>>AParameter.FDisplayAlpha[3];
00156
00157 AStream>>tmp; assert ( !strcmp(tmp, "Color0:") );
00158 AStream>>AParameter.FCLSew[0][0]>>AParameter.FCLSew[0][1]
00159 >>AParameter.FCLSew[0][2];
00160 AStream>>tmp; assert ( !strcmp(tmp, "Color1:") );
00161 AStream>>AParameter.FCLSew[1][0]>>AParameter.FCLSew[1][1]
00162 >>AParameter.FCLSew[1][2];
00163 AStream>>tmp; assert ( !strcmp(tmp, "Color2:") );
00164 AStream>>AParameter.FCLSew[2][0]>>AParameter.FCLSew[2][1]
00165 >>AParameter.FCLSew[2][2];
00166 AStream>>tmp; assert ( !strcmp(tmp, "Color3:") );
00167 AStream>>AParameter.FCLSew[3][0]>>AParameter.FCLSew[3][1]
00168 >>AParameter.FCLSew[3][2];
00169
00170 AParameter.putAllNeedToUpdate();
00171
00172 return AStream;
00173 }
00174
00175 }
00176
00177 int CParameterSew::getLWSew(int ADimension) const
00178 {
00179 assert(0<=ADimension && ADimension<=3);
00180 return FLWSew[ADimension];
00181 }
00182 void CParameterSew::setLWSew(int ADimension, int AValue)
00183 {
00184 assert(0<=ADimension && ADimension<=3);
00185 if (FLWSew[ADimension]!=AValue)
00186 {
00187 putAllNeedToUpdate();
00188 FLWSew[ADimension]= AValue;
00189 }
00190 }
00191
00192 float CParameterSew::getSewPosCoef(int ADimension) const
00193 {
00194 assert(0<=ADimension && ADimension<=3);
00195 return FSewPosCoef[ADimension];
00196 }
00197 void CParameterSew::setSewPosCoef(int ADimension, float AValue)
00198 {
00199 assert(0<=ADimension && ADimension<=3);
00200 if (FSewPosCoef[ADimension]!=AValue)
00201 {
00202 putAllNeedToUpdate();
00203 FSewPosCoef[ADimension]= AValue;
00204 }
00205 }
00206
00207 float CParameterSew::getCLSew(int ADimension, int AIndice) const
00208 {
00209 assert(0<=ADimension && ADimension<=3);
00210 assert(0<=AIndice && AIndice<=2);
00211 return FCLSew[ADimension][AIndice];
00212 }
00213 void CParameterSew::setCLSew(int ADimension, int AIndice, float AValue)
00214 {
00215 assert(0<=ADimension && ADimension<=3);
00216 assert(0<=AIndice && AIndice<=2);
00217 if (FCLSew[ADimension][AIndice]!=AValue)
00218 {
00219 putAllNeedToUpdate();
00220 FCLSew[ADimension][AIndice]= AValue;
00221 }
00222 }
00223 const float * CParameterSew::getCLSew(int ADimension) const
00224 {
00225 assert(0<=ADimension && ADimension<=3);
00226 return FCLSew[ADimension];
00227 }
00228 void CParameterSew::setCLSew(int ADimension, float AValue0,
00229 float AValue1, float AValue2)
00230 {
00231 assert(0<=ADimension && ADimension<=3);
00232 if ( FCLSew[ADimension][0]!=AValue0 ||
00233 FCLSew[ADimension][1]!=AValue1 ||
00234 FCLSew[ADimension][2]!=AValue2 )
00235 {
00236 putAllNeedToUpdate();
00237 FCLSew[ADimension][0]= AValue0;
00238 FCLSew[ADimension][1]= AValue1;
00239 FCLSew[ADimension][2]= AValue2;
00240 }
00241 }
00242 void CParameterSew::setCLSew(int ADimension,const float ATab[3])
00243 { setCLSew(ADimension,ATab[0],ATab[1],ATab[2]); }
00244
00245 bool CParameterSew::getDisplayAlpha(int AIndex) const
00246 {
00247 assert(0<=AIndex && AIndex<=3);
00248 return FDisplayAlpha[AIndex];
00249 }
00250
00251 void CParameterSew::setDisplayAlpha(int AIndex,bool AValue)
00252 {
00253 assert(0<=AIndex && AIndex<=3);
00254 if ( FDisplayAlpha[AIndex]!=AValue)
00255 {
00256 putAllNeedToUpdate();
00257 FDisplayAlpha[AIndex]= AValue;
00258 }
00259 }
00260
00261 void CParameterSew::invDisplayAlpha(int AIndex)
00262 {
00263 assert(0<=AIndex && AIndex<=3);
00264 putAllNeedToUpdate();
00265 FDisplayAlpha[AIndex]= !FDisplayAlpha[AIndex];
00266 }
00267
00268 int CParameterSew::getType() const
00269 { return PARAMETER_SEW; }
00270