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 #ifdef MODULE_SPAMOD
00026
00027 #include "controler-gmap-types.hh"
00028 #include "precompile-spamod.hh"
00029 #include "parameter-gmap-vertex.hh"
00030 #include "parameter-spamod.hh"
00031 #include "spamod-api.hh"
00032 #include <cassert>
00033 using namespace std;
00034 using namespace GMap3d;
00035
00036 CPrecompileSpamod::CPrecompileSpamod(CParameterGMapVertex * AParameterGMapV,
00037 CParameterSpamod * AParameterSpamod) :
00038 FParameterGMapV (AParameterGMapV),
00039 FParameterSpamod (AParameterSpamod)
00040 {
00041 assert(FParameterGMapV != NULL);
00042 assert(FParameterSpamod != NULL);
00043
00044 FParameterGMapV->addPrecompileToUpdate(this);
00045 FParameterSpamod->addPrecompileToUpdate(this);
00046 }
00047
00048 CPrecompileSpamod::CPrecompileSpamod(const CPrecompileSpamod & APrecompile) :
00049 CPrecompile (APrecompile),
00050 FParameterGMapV (APrecompile.FParameterGMapV),
00051 FParameterSpamod (static_cast<CParameterSpamod*>
00052 (APrecompile.FParameterSpamod->copy()))
00053 {
00054 assert(FParameterGMapV != NULL);
00055 assert(FParameterSpamod != NULL);
00056
00057 FParameterGMapV->addPrecompileToUpdate(this);
00058 FParameterSpamod->addPrecompileToUpdate(this);
00059 }
00060
00061 CPrecompileSpamod::~CPrecompileSpamod()
00062 {
00063 FParameterGMapV->removePrecompileToUpdate(this);
00064 FParameterSpamod->removePrecompileToUpdate(this);
00065 }
00066
00067 CPrecompile * CPrecompileSpamod::copy() const
00068 { return new CPrecompileSpamod(*this); }
00069
00070 void CPrecompileSpamod::setParameter(CParameter* AParameter)
00071 {
00072 switch (AParameter->getType())
00073 {
00074 case PARAMETER_GMAP_VERTEX:
00075 setGMapVertex(static_cast<CParameterGMapVertex *>(AParameter));
00076 break;
00077 case PARAMETER_SPAMOD:
00078 setParameterSpamod(static_cast<CParameterSpamod*>(AParameter));
00079 break;
00080 }
00081 }
00082
00083 CParameter* CPrecompileSpamod::getParameter() const
00084 { return FParameterSpamod; }
00085
00086 void CPrecompileSpamod::setGMapVertex(CParameterGMapVertex* AParameterGMapV)
00087 {
00088 assert(AParameterGMapV != NULL);
00089 AParameterGMapV->addPrecompileToUpdate(this);
00090 FParameterGMapV->removePrecompileToUpdate(this);
00091 FParameterGMapV = AParameterGMapV;
00092 setToUpdate();
00093 }
00094
00095 void CPrecompileSpamod::setParameterSpamod(CParameterSpamod* ASpamod)
00096 {
00097 assert(ASpamod != NULL);
00098 ASpamod->addPrecompileToUpdate(this);
00099 FParameterSpamod->removePrecompileToUpdate(this);
00100 FParameterSpamod = ASpamod;
00101 setToUpdate();
00102 }
00103
00104 TPrecompile CPrecompileSpamod::getType() const
00105 { return PRECOMPILE_SPAMOD; }
00106
00107 void CPrecompileSpamod::drawModel()
00108 {
00109 if (FParameterGMapV->getMap()->getFirstDart() == NULL ||
00110 FParameterSpamod->getViewMode() == SPAMOD_NONE)
00111 return;
00112
00113
00114 FSpamodAPI = new CSpamodAPI((CGMap *) FParameterGMapV->getMap());
00115
00116
00117 for (int i=0; i<2; ++i)
00118 FSpamodAPI->setEuclidianParam(i, FParameterSpamod->getEuclidianParam(i));
00119
00120 for (int i=0; i<4; ++i)
00121 FSpamodAPI->setAnalyticParam(i, FParameterSpamod->getAnalyticParam(i));
00122
00123 for (int i=0; i<3; ++i)
00124 FSpamodAPI->setVoxelParam(i, FParameterSpamod->getVoxelParam(i));
00125
00126 for (int i=0; i<3; ++i)
00127 FSpamodAPI->setK2Param(i, FParameterSpamod->getK2Param(i));
00128
00129
00130
00131 FSpamodAPI->setViewMode(FParameterSpamod->getViewMode());
00132 FSpamodAPI->drawMap();
00133 FSpamodAPI->setViewMode(SPAMOD_NONE);
00134
00135 delete FSpamodAPI;
00136
00137 }
00138
00139 #endif // MODULE_SPAMOD
00140
00141
00142