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-normal-vector.hh"
00028 #include <cassert>
00029 #include <cstring>
00030 using namespace std;
00031 using namespace GMap3d;
00032
00033 CParameterNormalVector::CParameterNormalVector(int ANbRef) :
00034 CParameter(ANbRef)
00035 {
00036 reinit();
00037 }
00038
00039 CParameterNormalVector::
00040 CParameterNormalVector(const CParameterNormalVector & AParam) :
00041 CParameter (AParam),
00042 FAll (AParam.FAll),
00043 FLWNormalVector(AParam.FLWNormalVector),
00044 FLGNormalVector(AParam.FLGNormalVector)
00045 {
00046 setCLNormalVector(AParam.getCLNormalVector());
00047 }
00048
00049 CParameterNormalVector::~CParameterNormalVector()
00050 {}
00051
00052 CParameter * CParameterNormalVector::copy() const
00053 { return new CParameterNormalVector(*this); }
00054
00055 void CParameterNormalVector::save(ostream& AStream)
00056 { AStream<<(*this); }
00057
00058 void CParameterNormalVector::load(istream& AStream)
00059 { AStream>>(*this); }
00060
00061 void CParameterNormalVector::reinit()
00062 {
00063 FAll = DEFAULT_NORMAL_VECTOR_ALL;
00064 FLWNormalVector = DEFAULT_NORMAL_VECTOR_LINE_WIDTH;
00065 FLGNormalVector = DEFAULT_NORMAL_VECTOR_LENGTH;
00066 setCLNormalVector(DEFAULT_NORMAL_VECTOR_COLOR_0,
00067 DEFAULT_NORMAL_VECTOR_COLOR_1,
00068 DEFAULT_NORMAL_VECTOR_COLOR_2);
00069
00070 putAllNeedToUpdate();
00071 }
00072
00073 namespace GMap3d
00074 {
00075
00076 ostream& operator<<(ostream& AStream, const CParameterNormalVector & AParameter)
00077 {
00078 AStream<<"CParameterNormalVector:"<<endl;
00079
00080 AStream<<" DrawAll: "<<AParameter.FAll<<endl;
00081
00082 AStream<<" LineWidth: "<<AParameter.FLWNormalVector<<endl;
00083
00084 AStream<<" Length: "<<AParameter.FLGNormalVector<<endl;
00085
00086 AStream<<" Color: "<<AParameter.FCLNormalVector[0]<<" "
00087 <<AParameter.FCLNormalVector[1]<<" "<<AParameter.FCLNormalVector[2]<<endl;
00088
00089 AStream<<endl;
00090
00091 return AStream;
00092 }
00093
00094 istream& operator>>(istream& AStream, CParameterNormalVector & AParameter)
00095 {
00096 char tmp[256];
00097
00098 AStream>>tmp; assert ( !strcmp(tmp, "CParameterNormalVector:") );
00099
00100 AStream>>tmp; assert ( !strcmp(tmp, "DrawAll:") );
00101 AStream>>AParameter.FAll;
00102
00103 AStream>>tmp; assert ( !strcmp(tmp, "LineWidth:") );
00104 AStream>>AParameter.FLWNormalVector;
00105
00106 AStream>>tmp; assert ( !strcmp(tmp, "Length:") );
00107 AStream>>AParameter.FLGNormalVector;
00108
00109 AStream>>tmp; assert ( !strcmp(tmp, "Color:") );
00110 AStream>>AParameter.FCLNormalVector[0]>>AParameter.FCLNormalVector[1]
00111 >>AParameter.FCLNormalVector[2];
00112
00113 AParameter.putAllNeedToUpdate();
00114
00115 return AStream;
00116 }
00117
00118 }
00119
00120 bool CParameterNormalVector::getShowAllNormals() const
00121 { return FAll; }
00122
00123 void CParameterNormalVector::setShowAllNormals(bool AShow)
00124 {
00125 if (FAll != AShow)
00126 {
00127 putAllNeedToUpdate();
00128 FAll = AShow;
00129 }
00130 }
00131
00132 int CParameterNormalVector::getLWNormalVector() const
00133 { return FLWNormalVector; }
00134 void CParameterNormalVector::setLWNormalVector(int AValue)
00135 {
00136 if ( FLWNormalVector!=AValue )
00137 {
00138 putAllNeedToUpdate();
00139 FLWNormalVector= AValue;
00140 }
00141 }
00142
00143 float CParameterNormalVector::getLGNormalVector() const
00144 { return FLGNormalVector; }
00145 void CParameterNormalVector::setLGNormalVector(float AValue)
00146 {
00147 if ( FLGNormalVector!=AValue )
00148 {
00149 putAllNeedToUpdate();
00150 FLGNormalVector= AValue;
00151 }
00152 }
00153
00154 float CParameterNormalVector::getCLNormalVector(int AIndice) const
00155 {
00156 assert(0<=AIndice && AIndice<=2);
00157 return FCLNormalVector[AIndice];
00158 }
00159 void CParameterNormalVector::setCLNormalVector(int AIndice, float AValue)
00160 {
00161 assert(0<=AIndice && AIndice<=2);
00162 if ( FCLNormalVector[AIndice]!=AValue )
00163 {
00164 putAllNeedToUpdate();
00165 FCLNormalVector[AIndice]= AValue;
00166 }
00167 }
00168 const float * CParameterNormalVector::getCLNormalVector() const
00169 { return FCLNormalVector; }
00170 void CParameterNormalVector::setCLNormalVector(float AValue0, float AValue1,
00171 float AValue2)
00172 {
00173 if ( FCLNormalVector[0]!=AValue0 ||
00174 FCLNormalVector[1]!=AValue1 ||
00175 FCLNormalVector[2]!=AValue2 )
00176 {
00177 putAllNeedToUpdate();
00178 FCLNormalVector[0]= AValue0;
00179 FCLNormalVector[1]= AValue1;
00180 FCLNormalVector[2]= AValue2;
00181 }
00182 }
00183 void CParameterNormalVector::setCLNormalVector(const float ATab[3])
00184 { setCLNormalVector(ATab[0],ATab[1],ATab[2]); }
00185
00186 int CParameterNormalVector::getType() const
00187 { return PARAMETER_NORMAL_VECTOR; }
00188