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 #ifndef VIEW_PRECOMPILE_HH
00026 #define VIEW_PRECOMPILE_HH
00027
00028 #include "controler-types.hh"
00029 #include "view.hh"
00030 #include "vertex.hh"
00031
00032 #include <GL/glu.h>
00033 #include <GL/glut.h>
00034 #include <list>
00035
00039
00040
00046 class CParameter;
00047 class CPrecompile;
00048 class CParameterEyePosition;
00049 class CParameterAimedPosition;
00050 class CParameterDrawing;
00051
00052
00053 class CViewPrecompile : public CView
00054 {
00055 public:
00056
00058
00059 CViewPrecompile(CParameterEyePosition * AEyePosition,
00060 CParameterAimedPosition* AAimedPosition,
00061 CParameterDrawing * ADrawing);
00062
00064 virtual ~CViewPrecompile();
00066
00068
00070 virtual void update();
00071
00078 virtual void initScene();
00079
00084 virtual void drawScene();
00085
00087 virtual void pick(int AX, int AY);
00089
00091
00100 CPrecompile* findPrecompile(TPrecompile APrecompileType);
00101
00108 void addPrecompile(CPrecompile* APrecompile);
00109
00119 CPrecompile* removePrecompile(TPrecompile APrecompileType);
00120
00128 CPrecompile* removePrecompile(CPrecompile* APrecompile);
00129
00131
00133
00138 CParameterEyePosition & getEyePosition() const;
00139
00144 CParameterAimedPosition & getAimedPosition() const;
00145
00150 CVertex getLookAt();
00151
00157 CVertex getEyeDirection();
00158
00167 void unproject(float Ax, float Ay, float ARes[]);
00168
00178 void project(float Ax, float Ay, float Az, float ARes[]);
00179
00181
00183
00184 CParameterEyePosition* getParameterEyePosition() const;
00185 CParameterAimedPosition* getParameterAimedPosition() const;
00186 CParameterDrawing* getParameterDrawing() const;
00187
00188 void setParameterEyePosition (CParameterEyePosition* AParam);
00189 void setParameterAimedPosition(CParameterAimedPosition* AParam);
00190 void setParameterDrawing (CParameterDrawing* AParam);
00191
00192 CParameter* getParameter(TParameter AParameterType) const;
00193 void setParameter(CParameter* AParameter);
00194
00195 void groupParameter (CViewPrecompile* AView, TParameter AParameterType);
00196 void ungroupParameter(TParameter AParameterType);
00197
00199
00200
00202
00207 virtual void enable();
00208
00213 virtual void disable();
00214
00216
00217 protected:
00218
00223 void setScenePositionInitialize();
00224
00230 virtual void setScenePosition() = 0;
00231
00236 void setScenePositionFinalize();
00237
00243 virtual void display();
00244
00246 CParameterEyePosition * FParameterEyePosition;
00247
00249 CParameterAimedPosition * FParameterAimedPosition;
00250
00252 CParameterDrawing * FParameterDrawing;
00253
00255 float FRatio;
00256
00257 private:
00259 GLint FViewport[4];
00260 GLdouble FModelViewMatrix[16], FProjectionMatrix[16];
00261
00263 std::list<CPrecompile*> FListPrecompile;
00264 };
00265
00266
00267 #endif // VIEW_PRECOMPILE_HH
00268