source: Sophya/trunk/Poubelle/DPC:FitsIOServer/PI/pi3ddrw.h

Last change on this file was 658, checked in by ansari, 26 years ago

no message

File size: 5.2 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2// Module PI : Peida Interactive PIDrawer3D PIDraw3DWdg
3// Drawer et DrawWidget 3D R. Ansari 06/98
4// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
5
6#ifndef PIDRW3D_H_SEEN
7#define PIDRW3D_H_SEEN
8
9#include "pisysdep.h"
10#include "pidrawer.h"
11#include "pigraph3d.h"
12
13#include PIBWDG_H
14
15
16// ----------------- Traceur (Drawer) 3D -------------------
17
18class PIDrawer3D : public PIDrawer
19{
20public :
21 PIDrawer3D();
22 virtual ~PIDrawer3D();
23
24 virtual void Set3DView_Obs(double xo, double yo, double zo, double teta, double phi, double psi,
25 double dax, double day, double co, double dco=0.2);
26 virtual void Set3DView(double xc, double yc, double zc, double xo, double yo, double zo,
27 double dax, double day, double dco=0.2, double psi=0.);
28 bool Get3DView(double& xc, double& yc, double& zc, double& xo, double& yo, double& zo,
29 double& teta, double& phi, double& psi, double& dax, double& day, double& co, double& dco);
30
31 virtual PIGraphicUC* SetDrwWdg(PIBaseWdgGen* drw, int x0, int y0, int dx, int dy, PIGraphicGen* g);
32
33 virtual void DrawAxes(PIGraphicUC* g);
34 virtual void Draw3DBoxe(PIGraphic3D* g3, double xx1, double xx2, double yy1, double yy2,
35 double zz1, double zz2, double xl1, double xl2,
36 double yl1, double yl2, double zl1, double zl2);
37
38 double XMin3() const {return x3Min;}
39 double XMax3() const {return x3Max;}
40 double YMin3() const {return y3Min;}
41 double YMax3() const {return y3Max;}
42 double ZMin3() const {return z3Min;}
43 double ZMax3() const {return z3Max;}
44
45protected :
46 double xO, yO, zO; // Position observateur = camera
47 double xC, yC, zC; // Position centre du champ
48 double tO,fO,pO; // Orientation observateur (Teta, Phi, Psi, Angles d Euler)
49 double daxO, dayO; // Demi-ouverture de la camera suivant les deux axes de projection (xp/zp, yp/zp)
50 double lCO, dlCO; // Distance Camera-Centre du champ et profondeur de champ
51 bool v3D_obs; // Si defini par Set3DView_Obs
52 double x3Min, x3Max; // Pour delimiter le cube 3D
53 double y3Min, y3Max; // Pour delimiter le cube 3D
54 double z3Min, z3Max; // Pour delimiter le cube 3D
55};
56
57
58//------------------------------ Classe PIDrawer3D --------------------
59
60class PIDraw3DWdg : public PIBaseWdg {
61public:
62 enum {ClassId = 5500};
63
64 PIDraw3DWdg(PIContainerGen *par, char *nom,
65 int sx=100, int sy=100, int px=0, int py=0);
66 virtual ~PIDraw3DWdg();
67 virtual long kind() {return ClassId; }
68
69
70 virtual void Set3DView_Obs(double xo, double yo, double zo, double teta, double phi, double psi,
71 double dax, double day, double co, double dco=0.2);
72 virtual void Set3DView(double xc, double yc, double zc, double xo, double yo, double zo,
73 double dax, double day, double dco=0.2, double psi=0.);
74 bool Get3DView(double& xc, double& yc, double& zc, double& xo, double& yo, double& zo,
75 double& teta, double& phi, double& psi, double& dax, double& day, double& co, double& dco);
76
77 virtual void Update3DView(); // Vue 3-D a partir de Drawer No 1
78
79 inline void SetTitles(const char* tt=NULL, const char* tb=NULL)
80 { mBDrw->SetTitles(tt, tb); }
81 inline void SetTitles(string const & tt, string const & tb)
82 { mBDrw->SetTitles(tt, tb); }
83
84 int AddDrawer3D(PIDrawer3D*, bool ad=false); // Ajoute un Drawer
85
86// Pour tenir trace des Drawers-3D qui sont detruits
87 virtual void RemoveDrawer(int id);
88 virtual void DeleteDrawers();
89
90 virtual void But1Press(int x, int y);
91
92 virtual void But2Press(int x, int y);
93 virtual void But2Release(int x, int y);
94 virtual void Ptr2Move(int x, int y);
95
96 virtual void But3Press(int x, int y);
97 virtual void But3Release(int x, int y);
98 virtual void Ptr3Move(int x, int y);
99
100 virtual void Keyboard(int key, PIKeyModifier kmod);
101 virtual void PasteSelection(unsigned int typ, void *pdata, unsigned int l);
102
103
104protected :
105 virtual void SetDrawers3DView();
106 virtual void DrawXYZAxes();
107
108 PIElDrawer* mBDrw; // Objet traceur d'elements de fond
109 int mPx, mPy; // Position pointeur - Bouton-1
110
111 bool vfixed; // SetView fait ou pas
112 list<int> m3DrIl; // Liste des Id drawers 3D
113 PIGraphic3D* mGr3d; // PIGraphic3D courante
114 int lPx, lPy; // dernier position pointeur
115 PIColors lCol; // Couleur
116 double cTeta, cPhi, cUlen; // Pour garder valeurs avant rotation, Unite de longeur
117 double cXc, cYc, cZc; // Pour garder position du centre de champ
118 double clCO, cDax, cDay; // Pour garder les valeurs avant Zoom In/Out
119 bool rOfg; // si Vrai on fait tourner l'objet et pas la camera
120 bool axfg; // si Vrai on trace les axes
121 bool skcfg; // si Vrai click-2 au centre -> rotation objet
122};
123
124#endif
Note: See TracBrowser for help on using the repository browser.