ATLAS Offline Software
Loading...
Searching...
No Matches
VP1CameraHelper Class Reference

#include <VP1CameraHelper.h>

Inheritance diagram for VP1CameraHelper:
Collaboration diagram for VP1CameraHelper:

Classes

class  Imp

Signals

void animationFinished ()
void animationFinishedAbnormally ()
void clipVolumePercentageOfATLAS (double)

Public Member Functions

void setOutputImagesMode (VP1ExaminerViewer *ra, const QString &outputdir, int width=1024, int height=768, double fps=24, const QString &prefix="vp1_frame")
void forceAbort ()

Static Public Member Functions

static void abortAnyCurrentZoom (SoCamera *camera)
static VP1CameraHelperanimatedZoomToCameraState (SoCamera *camera, SoGroup *sceneroot, const QByteArray &camstate, double duration_in_secs=1.0, double clipVolPercent=100.0, double lastClipVolPercent=100.0, bool varySpeed=true, bool forceCircular=false)
static VP1CameraHelperanimatedZoomToPoint (SoCamera *camera, SoGroup *sceneroot, SbVec3f, double duration_in_secs=1.0, double clipVolPercent=100.0, bool varySpeed=true, bool forceCircular=false)
static VP1CameraHelperanimatedZoomToPath (SoCamera *camera, SoGroup *sceneroot, SoPath *path, double duration_in_secs=1.0, double clipVolPercent=100.0, double slack=1.0, const SbVec3f &lookat=SbVec3f(999, 999, 999), const SbVec3f &upvec=SbVec3f(999, 999, 999), bool varySpeed=true, bool forceCircular=false)
static VP1CameraHelperanimatedZoomToBBox (SoCamera *camera, SoGroup *sceneroot, const SbBox3f &box, double duration_in_secs=1.0, double clipVolPercent=100.0, double slack=1.0, const SbVec3f &lookat=SbVec3f(999, 999, 999), const SbVec3f &upvec=SbVec3f(999, 999, 999), bool varySpeed=true, bool forceCircular=false)
static VP1CameraHelperanimatedZoomToSubTree (SoCamera *camera, SoGroup *sceneroot, SoNode *subtreeroot, double duration_in_secs=1.0, double clipVolPercent=100.0, double lastClipVolPercent=100.0, double slack=1.0, const SbVec3f &lookat=SbVec3f(999, 999, 999), const SbVec3f &upvec=SbVec3f(999, 999, 999), bool varySpeed=true, bool forceCircular=false)
static void getLastAndNextFrameFileNames (const QString &outputdir, const QString &prefix, QString &lastOfExistingFiles, QString &nextAvailableFile)

Private Member Functions

 VP1CameraHelper (SoCamera *, SoGroup *)
virtual ~VP1CameraHelper ()

Private Attributes

Impm_d

Detailed Description

Definition at line 31 of file VP1CameraHelper.h.

Constructor & Destructor Documentation

◆ VP1CameraHelper()

VP1CameraHelper::VP1CameraHelper ( SoCamera * camera,
SoGroup * sceneroot )
private

Definition at line 202 of file VP1CameraHelper.cxx.

203 : QObject(0), m_d(new Imp)
204{
205 m_d->theclass=this;
206 m_d->camera=camera;
207 m_d->forceCircular = false;
208 if (camera) {
209 std::map<SoCamera*,VP1CameraHelper*>::iterator it = Imp::helpers.find(camera);
210 if (it!=Imp::helpers.end())
211 it->second->forceAbort();
212 Imp::helpers[camera] = this;
213 }
214 m_d->sceneroot=sceneroot;
215
216 m_d->fps=-1;
217 m_d->ntotframes = -1;
218 m_d->width = 100;
219 m_d->height = 100;
220 m_d->iframe = -1;
221 m_d->renderArea = 0;
222
223 m_d->seekdistance = 50.0f;
224 m_d->seekdistanceabs = FALSE;
225 m_d->seektopoint = TRUE;
226 m_d->seekperiod = 2.0f;
227 m_d->inseekmode = FALSE;
228 m_d->seeksensor = new SoTimerSensor(Imp::seeksensorCB, m_d);
229
230 m_d->searchaction = new SoSearchAction;
231 m_d->matrixaction = new SoGetMatrixAction(SbViewportRegion(100,100));
232
233 m_d->camera->ref();
234 m_d->sceneroot->ref();
235 m_d->camera_ref=m_d->camera->getRefCount();
236 m_d->instance_invalid = false;
237
238 if (!camera||!sceneroot)
239 m_d->instance_invalid=true;
240
241}
static void seeksensorCB(void *data, SoSensor *)
static std::map< SoCamera *, VP1CameraHelper * > helpers

Member Function Documentation

◆ abortAnyCurrentZoom()

void VP1CameraHelper::abortAnyCurrentZoom ( SoCamera * camera)
static

Definition at line 265 of file VP1CameraHelper.cxx.

266{
267 std::map<SoCamera*,VP1CameraHelper*>::iterator it = Imp::helpers.find(camera);
269 if (it!=Imp::helpers.end()) {
270 helper = it->second;
271 }
272 if (helper)
273 helper->forceAbort();
274}
VP1CameraHelper(SoCamera *, SoGroup *)

◆ animatedZoomToBBox()

VP1CameraHelper * VP1CameraHelper::animatedZoomToBBox ( SoCamera * camera,
SoGroup * sceneroot,
const SbBox3f & box,
double duration_in_secs = 1.0,
double clipVolPercent = 100.0,
double slack = 1.0,
const SbVec3f & lookat = SbVec3f(999,999,999),
const SbVec3f & upvec = SbVec3f(999,999,999),
bool varySpeed = true,
bool forceCircular = false )
static

Definition at line 460 of file VP1CameraHelper.cxx.

464{
465
466 VP1CameraHelper * helper = new VP1CameraHelper(camera,sceneroot);
467 helper->m_d->actual_animatedZoomToBBox( box,duration_in_secs,slack,lookat,upvec );
468 helper->m_d->varySpeed=varySpeed;
469 helper->m_d->forceCircular = forceCircular;
470 return helper;
471}

◆ animatedZoomToCameraState()

VP1CameraHelper * VP1CameraHelper::animatedZoomToCameraState ( SoCamera * camera,
SoGroup * sceneroot,
const QByteArray & camstate,
double duration_in_secs = 1.0,
double clipVolPercent = 100.0,
double lastClipVolPercent = 100.0,
bool varySpeed = true,
bool forceCircular = false )
static

Definition at line 301 of file VP1CameraHelper.cxx.

305{
306 // std::cout<<"VP1CameraHelper::animatedZoomToCameraState - clipVol%="<<clipVolPercent<<" lastClipVolPercent"<<lastClipVolPercent<<std::endl;
307 // std::cout<<"clipVol_lastPercentage%="<<d->clipVol_lastPercentage<<", clipVol_percentage%="<<d->clipVol_percentage
308 // <<", clipVol_startPercentage%="<<d->clipVol_startPercentage<<", clipVol_endPercentage%="<<d->clipVol_endPercentage<<std::endl;
309 VP1CameraHelper * helper = new VP1CameraHelper(camera,sceneroot);
310 helper->m_d->actual_animatedZoomToCameraState( camstate,duration_in_secs );
311 helper->m_d->varySpeed=varySpeed;
312 helper->m_d->clipVol_startPercentage=lastClipVolPercent;
313 helper->m_d->clipVol_percentage=lastClipVolPercent;
314 helper->m_d->clipVol_endPercentage=clipVolPercent;
315 helper->m_d->forceCircular = forceCircular;
316 return helper;
317}

◆ animatedZoomToPath()

VP1CameraHelper * VP1CameraHelper::animatedZoomToPath ( SoCamera * camera,
SoGroup * sceneroot,
SoPath * path,
double duration_in_secs = 1.0,
double clipVolPercent = 100.0,
double slack = 1.0,
const SbVec3f & lookat = SbVec3f(999,999,999),
const SbVec3f & upvec = SbVec3f(999,999,999),
bool varySpeed = true,
bool forceCircular = false )
static

Definition at line 371 of file VP1CameraHelper.cxx.

375{
376 VP1CameraHelper * helper = new VP1CameraHelper(camera,sceneroot);
377 helper->m_d->actual_animatedZoomToPath( path,duration_in_secs, slack, lookat, upvec );
378 helper->m_d->varySpeed=varySpeed;
379 helper->m_d->forceCircular = forceCircular;
380 return helper;
381}

◆ animatedZoomToPoint()

VP1CameraHelper * VP1CameraHelper::animatedZoomToPoint ( SoCamera * camera,
SoGroup * sceneroot,
SbVec3f targetpoint,
double duration_in_secs = 1.0,
double clipVolPercent = 100.0,
bool varySpeed = true,
bool forceCircular = false )
static

Definition at line 592 of file VP1CameraHelper.cxx.

595{
596 VP1CameraHelper * helper = new VP1CameraHelper(camera,sceneroot);
597 helper->m_d->actual_animatedZoomToPoint( targetpoint,duration_in_secs );
598 helper->m_d->varySpeed=varySpeed;
599 helper->m_d->forceCircular = forceCircular;
600 return helper;
601}

◆ animatedZoomToSubTree()

VP1CameraHelper * VP1CameraHelper::animatedZoomToSubTree ( SoCamera * camera,
SoGroup * sceneroot,
SoNode * subtreeroot,
double duration_in_secs = 1.0,
double clipVolPercent = 100.0,
double lastClipVolPercent = 100.0,
double slack = 1.0,
const SbVec3f & lookat = SbVec3f(999,999,999),
const SbVec3f & upvec = SbVec3f(999,999,999),
bool varySpeed = true,
bool forceCircular = false )
static

Definition at line 413 of file VP1CameraHelper.cxx.

417{
418 VP1CameraHelper * helper = new VP1CameraHelper(camera,sceneroot);
419 helper->m_d->actual_animatedZoomToSubTree( subtreeroot,duration_in_secs,slack,lookat,upvec );
420 helper->m_d->varySpeed=varySpeed;
421 helper->m_d->forceCircular = forceCircular;
422 return helper;
423}

◆ animationFinished

void VP1CameraHelper::animationFinished ( )
signal

◆ animationFinishedAbnormally

void VP1CameraHelper::animationFinishedAbnormally ( )
signal

◆ clipVolumePercentageOfATLAS

void VP1CameraHelper::clipVolumePercentageOfATLAS ( double )
signal

◆ forceAbort()

void VP1CameraHelper::forceAbort ( )

Definition at line 150 of file VP1CameraHelper.cxx.

151{
152 std::map<SoCamera*,VP1CameraHelper*>::iterator it = Imp::helpers.find(m_d->camera);
153 if (it!=Imp::helpers.end())
154 Imp::helpers.erase(it);
155 m_d->instance_invalid = true;
156 m_d->camera->unrefNoDelete();
157 m_d->camera = 0;
158}

◆ getLastAndNextFrameFileNames()

void VP1CameraHelper::getLastAndNextFrameFileNames ( const QString & outputdir,
const QString & prefix,
QString & lastOfExistingFiles,
QString & nextAvailableFile )
static

Definition at line 793 of file VP1CameraHelper.cxx.

796{
797 lastOfExistingFiles="";
798 QString filename;
799 int i(0);
800 while (true) {
801 filename=outputdir+"/"+prefix+"_"+QString::number(i++).rightJustified(6,'0')+".png";
802 if (!QFile::exists(filename)) {
803 nextAvailableFile=filename;
804 return;
805 }
806 lastOfExistingFiles = filename;
807 }
808}

◆ setOutputImagesMode()

void VP1CameraHelper::setOutputImagesMode ( VP1ExaminerViewer * ra,
const QString & outputdir,
int width = 1024,
int height = 768,
double fps = 24,
const QString & prefix = "vp1_frame" )

Definition at line 164 of file VP1CameraHelper.cxx.

170{
171 if (!ra) {
172 VP1Msg::messageDebug("VP1CameraHelper::setOutputImagesMode ERROR: Bad input. Null render area.");
173 return;
174 }
175 if (fps<1) {
176 VP1Msg::messageDebug("VP1CameraHelper::setOutputImagesMode ERROR: Bad input. Bad FPS = "+QString::number(fps));
177 return;
178 }
179 if (!QDir(outputdir).exists()) {
180 VP1Msg::messageDebug("VP1CameraHelper::setOutputImagesMode ERROR: Bad input. Output dir "+outputdir+" does not exist.");
181 return;
182 }
183 if (width<1||width>4000||height<1||height>4000) {
184 VP1Msg::messageDebug("VP1CameraHelper::setOutputImagesMode ERROR: Bad input. Bad dimensions: "
185 +QString::number(width)+"x"+QString::number(height));
186 return;
187 }
188 if (prefix.isEmpty()) {
189 VP1Msg::messageDebug("VP1CameraHelper::setOutputImagesMode ERROR: Bad input. Empty prefix.");
190 return;
191 }
192 m_d->fps = fps;
193 m_d->outputdir = outputdir;
194 m_d->width = width;
195 m_d->height = height;
196 m_d->prefix = prefix;
197 m_d->renderArea = ra;
198}
const double width
static void messageDebug(const QString &)
Definition VP1Msg.cxx:39
bool exists(const std::string &filename)
does a file exist

◆ ~VP1CameraHelper()

VP1CameraHelper::~VP1CameraHelper ( )
privatevirtual

Definition at line 245 of file VP1CameraHelper.cxx.

246{
247 if (m_d->seeksensor->isScheduled())
248 m_d->seeksensor->unschedule();
249 delete m_d->seeksensor;
250 m_d->searchaction->reset(); delete m_d->searchaction;
251 delete m_d->matrixaction;
252 SoCamera * cam = m_d->camera;
253 if (m_d->sceneroot)
254 m_d->sceneroot->unref();
255 delete m_d; m_d=0;
256 if (cam) {
257 std::map<SoCamera*,VP1CameraHelper*>::iterator it = Imp::helpers.find(cam);
258 if (it!=Imp::helpers.end())
259 Imp::helpers.erase(it);
260 cam->unref();
261 }
262}

Member Data Documentation

◆ m_d

Imp* VP1CameraHelper::m_d
private

Definition at line 103 of file VP1CameraHelper.h.


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