From 46ede434d88d7e06472622cad545928edd55624d Mon Sep 17 00:00:00 2001 From: ganovelli Date: Thu, 14 Apr 2005 21:23:39 +0000 Subject: [PATCH] *** empty log message *** --- wrap/gui/trackrecorder.h | 85 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 wrap/gui/trackrecorder.h diff --git a/wrap/gui/trackrecorder.h b/wrap/gui/trackrecorder.h new file mode 100644 index 00000000..bd3cbb82 --- /dev/null +++ b/wrap/gui/trackrecorder.h @@ -0,0 +1,85 @@ +/**************************************************************************** +* VCGLib o o * +* Visual and Computer Graphics Library o o * +* _ O _ * +* Copyright(C) 2004 \/)\/ * +* Visual Computing Lab /\/| * +* ISTI - Italian National Research Council | * +* \ * +* All rights reserved. * +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) * +* for more details. * +* * +****************************************************************************/ +/**************************************************************************** + History + +$Log: not supported by cvs2svn $ + + +****************************************************************************/ +#ifndef VCGLIB_TRACKRECORDER +#define VCGLIB_TRACKRECORDER + + +#include +#include +#include + +namespace vcg{ +struct TrackRecorder{ + + TrackRecorder(){Stop();} + + FILE * trackfile; + + enum { PLAY,REC,OFF } mode; + int nextTime, + startTime; + + StartPlaying(char * namefile){ + if(trackfile != NULL) return; + + trackfile = fopen(namefile,"rb"); + startTime = clock(); + mode = PLAY; + fread(&nextTime,4,1,trackfile); + } + + UpdateTrackball(Trackball & t){ + + while( ( clock()-startTime > nextTime)&& !feof(trackfile)){ + fread(&t.track,sizeof(float)*4 + sizeof(float)*5,1,trackfile); + fread(&nextTime,4,1,trackfile); + } + if(feof(trackfile)) + Stop(); + } + + StartRecording(char * namefile){ + if(trackfile != NULL) return; + trackfile = fopen(namefile,"wb"); + startTime = clock(); + mode = REC; + } + + RecordTrackball(Trackball & t){ + nextTime = clock()-startTime; + fwrite(&nextTime,4,1,trackfile); + fwrite(&t.track,sizeof(float)*4 + sizeof(float)*5,1,trackfile); + } + + Stop(){mode = OFF; trackfile = NULL;}; + +}; +} +#endif \ No newline at end of file