FEDRA emulsion software from the OPERA Collaboration
EdbEDACamera Class Reference

#include <EdbEDA.h>

Inheritance diagram for EdbEDACamera:
Collaboration diagram for EdbEDACamera:

Public Types

enum  { X , Y , Z , B }
 

Public Member Functions

void Animation ()
 
 EdbEDACamera ()
 
TGLViewer * GetGLViewer ()
 
EdbEDAOverlayGetOverlay ()
 
void SaveAnimation (char *filename=NULL, int n=100, int interval=10)
 
void SavePictures ()
 
void SetAnimationMode ()
 
void SetCamera (int projection=Y)
 
EdbEDAOverlaySetOverlay ()
 
void Snapshot (char *filename=NULL)
 
void StartAnimation ()
 
void StopAnimation ()
 
virtual ~EdbEDACamera ()
 

Public Attributes

TGLViewer * eViewer
 

Private Attributes

float eAnimationAmplitude
 
int eAnimationMode
 
EdbEDAOverlayeOverlay
 
float eTheta
 
TTimer * eTimer
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
139{X,Y,Z,B};
@ Z
Definition: EdbEDA.h:139
@ B
Definition: EdbEDA.h:139
@ Y
Definition: EdbEDA.h:139
@ X
Definition: EdbEDA.h:139

Constructor & Destructor Documentation

◆ EdbEDACamera()

EdbEDACamera::EdbEDACamera ( )
inline
float eAnimationAmplitude
Definition: EdbEDA.h:133
float eTheta
Definition: EdbEDA.h:132
TTimer * eTimer
Definition: EdbEDA.h:129
int eAnimationMode
Definition: EdbEDA.h:131
TGLViewer * eViewer
Definition: EdbEDA.h:137
#define NULL
Definition: nidaqmx.h:84

◆ ~EdbEDACamera()

virtual EdbEDACamera::~EdbEDACamera ( )
inlinevirtual
143{}

Member Function Documentation

◆ Animation()

void EdbEDACamera::Animation ( )
103 {
104
105
106 TGLViewer *v=eViewer;
107 TGLCamera& cam=v->CurrentCamera();
108 if(eAnimationMode==0) cam.RotateRad(0.0,0.02);
109 if(eAnimationMode==1) cam.RotateRad( eAnimationAmplitude*sin(eTheta), eAnimationAmplitude*cos(eTheta+=0.04));
110 if(eAnimationMode==2) cam.RotateRad(0, eAnimationAmplitude*sin(eTheta+=0.04));
111 v->DoDraw();
112}

◆ GetGLViewer()

TGLViewer * EdbEDACamera::GetGLViewer ( )

◆ GetOverlay()

EdbEDAOverlay * EdbEDACamera::GetOverlay ( )
inline
155{return eOverlay;}
EdbEDAOverlay * eOverlay
Definition: EdbEDA.h:134

◆ SaveAnimation()

void EdbEDACamera::SaveAnimation ( char *  filename = NULL,
int  n = 100,
int  interval = 10 
)
125 {
126 printf("gEDA->SaveAnimation(char *filename, int nview=100, int interval=10)\n");
127 if(filename==NULL){ // File dialog
128 TGFileInfo *fi=new TGFileInfo;
129 fi->fIniDir = StrDup(".");
130 const char *filetypes[] = { "Animated Gif", "*.gif", 0,0};
131 fi->fFileTypes = filetypes;
132 new TGFileDialog(gClient->GetRoot(), gEve->GetMainWindow(), kFDSave, fi);
133 filename = fi->fFilename;
134 }
135 if(filename==NULL) return;
136
137 n=InputNumberInteger("Input N frame per rotation.", n);
138
139 TGLViewer *v=eViewer;
140 TGLCamera& c=v->CurrentCamera();
141 v->SavePicture(Form("%s",filename));
142 for(int i=0;i<n;i++){
143 printf("save animation %d/%d\r",i,n);
144 if(eAnimationMode==0) c.RotateRad(0.0,2*3.14/n);
145 if(eAnimationMode==1) c.RotateRad(eAnimationAmplitude*sin(eTheta+=2*3.14/n),
147 if(eAnimationMode==2) c.RotateRad(0,
148 eAnimationAmplitude*cos(eTheta+=2*3.14/n));
149 v->DoDraw();
150 v->SavePicture(Form("%s+%d",filename,interval));
151
152 }
153 v->SavePicture(Form("%s++",filename));
154 printf("save animation done!!.\n");
155}
const char filename[256]
Definition: RecDispNU.C:83
int InputNumberInteger(char *message, int idefault=0)
Definition: EdbEDAUtil.C:846

◆ SavePictures()

void EdbEDACamera::SavePictures ( )
157 {
158 printf("Save Pictures : x.gif, y.gif, z.gif, b.gif\n");
159 FILE *fp = fopen("x.gif","rb");
160 if(fp) {
161 fclose(fp);
162 printf("file already exist. delete and re-try.\n");
163 return;
164 }
165
166 TGLViewer *v = eViewer;
168 v->SavePicture("x.gif");
170 v->SavePicture("y.gif");
172 v->SavePicture("z.gif");
174 v->SavePicture("b.gif");
175}
EdbEDA * gEDA
Definition: EdbEDA.C:3
void SetCamera(int projection=Y)
Definition: EdbEDA.C:50
fclose(pFile)

◆ SetAnimationMode()

void EdbEDACamera::SetAnimationMode ( )
97 {
98
99 eAnimationMode = InputNumberInteger("Animation Mode? 0: rotation(default), 1: hand move like, 2: left-right.", eAnimationMode);
101
102}
double InputNumberReal(char *message, double default_num=0.0, TGNumberFormat::EStyle es=TGNumberFormat::kNESReal)
Definition: EdbEDAUtil.C:858

◆ SetCamera()

void EdbEDACamera::SetCamera ( int  projection = Y)
50 {
51 switch(projection){
52 case X: // X projection
53 {
54 eViewer->SetCurrentCamera(TGLViewer::kCameraOrthoZOY);
55 TGLOrthoCamera& cam = (TGLOrthoCamera &)(eViewer->CurrentCamera());
56 cam.Reset();
57 cam.RotateRad( -3.14159*0.5, 0.0);
58 cam.SetEnableRotate(1);
59 printf("set camera : X projection\n");
60 }
61 break;
62 case Y: // Y projection
63 {
64 eViewer->SetCurrentCamera(TGLViewer::kCameraOrthoZOY);
65 TGLOrthoCamera& cam = (TGLOrthoCamera &)eViewer->CurrentCamera();
66 cam.Reset();
67 cam.SetEnableRotate(1);
68 printf("set camera : Y projection\n");
69 }
70 break;
71 case Z: // Z
72 {
73 eViewer->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
74 TGLOrthoCamera& cam = (TGLOrthoCamera &)eViewer->CurrentCamera();
75 cam.Reset();
76 cam.SetEnableRotate(1);
77 printf("set camera : Y projection\n");
78 }
79 break;
80 case B: // Beam view
81 {
82 eViewer->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
83 TGLOrthoCamera& cam = (TGLOrthoCamera &)eViewer->CurrentCamera();
84 cam.Reset();
85 double tx = atan(gEDA->GetBeamTY()/gEDA->GetScaleZ());
86 double ty = atan(gEDA->GetBeamTX()/gEDA->GetScaleZ());
87 cam.RotateRad(-tx,-ty);
88 cam.SetEnableRotate(1);
89 printf("set camera : Beam projection. 0.058 rad tilted\n");
90 }
91 break;
92 default : break;
93 }
94 (eViewer)->DoDraw(); // ???? doesn't work...
95}
double GetBeamTX()
Definition: EdbEDA.h:343
double GetBeamTY()
Definition: EdbEDA.h:344
double GetScaleZ()
Definition: EdbEDA.h:732

◆ SetOverlay()

EdbEDAOverlay * EdbEDACamera::SetOverlay ( )
inline
154{eOverlay=new EdbEDAOverlay; eViewer->AddOverlayElement(eOverlay); return eOverlay;}
Definition: EdbEDA.h:106

◆ Snapshot()

void EdbEDACamera::Snapshot ( char *  filename = NULL)
180 {
181 if(filename==NULL) {
182 TGFileInfo *fi=new TGFileInfo;
183 fi->fIniDir = StrDup(".");
184 const char *filetypes[] = { "GIF", "*.gif", "JPG","*.jpg", "PNG","*.png", 0,0};
185 fi->fFileTypes=filetypes;
186 new TGFileDialog(gClient->GetRoot(), gEve->GetMainWindow(), kFDSave, fi);
187 printf("Save current view : %s\n", fi->fFilename);
188 filename=fi->fFilename;
189 }
190 if(filename==NULL) return;
191 TGLViewer *v = eViewer;
192 TString name=filename;
193 v->SavePicture(filename);
194}
const char * name
Definition: merge_Energy_SytematicSources_Electron.C:24

◆ StartAnimation()

void EdbEDACamera::StartAnimation ( )
114 {
115 if(NULL==eTimer){
116 eTimer = new TTimer;
117 eTimer->Connect("Timeout()","EdbEDA",this,"Animation()");
118 eViewer->Connect("Destroyed()", "EdbEDA", this, "StopAnimation()");
119 }
120 eTimer->Start(50,0);
121}

◆ StopAnimation()

void EdbEDACamera::StopAnimation ( )
122{ eTimer->TurnOff();}

Member Data Documentation

◆ eAnimationAmplitude

float EdbEDACamera::eAnimationAmplitude
private

◆ eAnimationMode

int EdbEDACamera::eAnimationMode
private

◆ eOverlay

EdbEDAOverlay* EdbEDACamera::eOverlay
private

◆ eTheta

float EdbEDACamera::eTheta
private

◆ eTimer

TTimer* EdbEDACamera::eTimer
private

◆ eViewer

TGLViewer* EdbEDACamera::eViewer

The documentation for this class was generated from the following files: