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-types.hh"
00026 #include "precompile-grid.hh"
00027 #include <cassert>
00028
00029 CPrecompileGrid::CPrecompileGrid( CParameterGrid * AParameterGrid ) :
00030 FParameterGrid(AParameterGrid)
00031 {
00032 assert(FParameterGrid!=NULL);
00033 FParameterGrid->addPrecompileToUpdate(this);
00034 }
00035
00036 CPrecompileGrid::CPrecompileGrid( const CPrecompileGrid & APrecompile ) :
00037 CPrecompile (APrecompile),
00038 FParameterGrid(static_cast<CParameterGrid*>
00039 (APrecompile.FParameterGrid->copy()))
00040 {
00041 assert(FParameterGrid!=NULL);
00042 FParameterGrid->addPrecompileToUpdate(this);
00043 }
00044
00045 CPrecompileGrid::~CPrecompileGrid()
00046 {
00047 FParameterGrid->removePrecompileToUpdate(this);
00048 }
00049
00050 CPrecompile * CPrecompileGrid::copy() const
00051 { return new CPrecompileGrid(*this); }
00052
00053 void CPrecompileGrid::setParameter(CParameter * AParameter)
00054 {
00055 switch (AParameter->getType())
00056 {
00057 case PARAMETER_GRID:
00058 setGrid(static_cast<CParameterGrid *>(AParameter));
00059 break;
00060 }
00061 }
00062
00063 CParameter* CPrecompileGrid::getParameter() const
00064 { return FParameterGrid; }
00065
00066 void CPrecompileGrid::setGrid(CParameterGrid * AGrid)
00067 {
00068 assert(AGrid != NULL);
00069 AGrid->addPrecompileToUpdate(this);
00070 FParameterGrid->removePrecompileToUpdate(this);
00071 FParameterGrid = AGrid;
00072 setToUpdate();
00073 }
00074
00075 TPrecompile CPrecompileGrid::getType() const
00076 { return PRECOMPILE_GRID; }
00077
00078 void CPrecompileGrid::drawModel()
00079 {
00080 int size= FParameterGrid->getLGGrid();
00081 bool xy = FParameterGrid->getDisplayGridXY();
00082 bool xz = FParameterGrid->getDisplayGridXZ();
00083 bool yz = FParameterGrid->getDisplayGridYZ();
00084 bool px = FParameterGrid->getDisplayPositiveGridX();
00085 bool py = FParameterGrid->getDisplayPositiveGridY();
00086 bool pz = FParameterGrid->getDisplayPositiveGridZ();
00087 int xmin= px ? 0 : -size;
00088 int ymin= py ? 0 : -size;
00089 int zmin= pz ? 0 : -size;
00090
00091 glLineWidth(FParameterGrid->getLWGrid());
00092
00093 glBegin(GL_LINES);
00094
00095 glColor3fv(FParameterGrid->getCLGrid());
00096
00097 for (int i=-size; i<=+size; ++i)
00098 {
00099 if (xy)
00100 {
00101
00102 if (i>=0 || !py) { glVertex3f(xmin, i, 0); glVertex3f(size, i, 0); }
00103
00104 if (i>=0 || !px) { glVertex3f(i, ymin, 0); glVertex3f(i, size, 0); }
00105 }
00106 if (xz)
00107 {
00108
00109 if (i>=0 || !pz) { glVertex3f(xmin, 0, i); glVertex3f(size, 0, i); }
00110
00111 if (i>=0 || !px) { glVertex3f(i, 0, zmin); glVertex3f(i, 0, size); }
00112 }
00113 if (yz)
00114 {
00115
00116 if (i>=0 || !pz) { glVertex3f(0, ymin, i); glVertex3f(0, size, i); }
00117
00118 if (i>=0 || !py) { glVertex3f(0, i, zmin); glVertex3f(0, i, size); }
00119 }
00120 }
00121
00122 glEnd();
00123 }
00124