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 (const char *filename=NULL, int n=100, int interval=10)
 
void SavePictures ()
 
void SetAnimationMode ()
 
void SetCamera (int projection=Y)
 
EdbEDAOverlaySetOverlay ()
 
void Snapshot (const 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 ( const char *  filename = NULL,
int  n = 100,
int  interval = 10 
)
125  {
126  printf("gEDA->SaveAnimation(const 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 }
string filename
Definition: emthickness.cpp:34
int InputNumberInteger(const 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(const 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 ( const 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: