key_framer.h

00001 #ifndef KEY_FRAMER_H
00002 #define KEY_FRAMER_H
00003 #include <config.h>
00004 #include <qgl.h>
00005 #include <qstring.h>
00006 #include <util/watchdog.h>
00007 #include "bsurface.h"
00008 
00009 namespace util
00010 {
00011 
00012   using Shapes::BSplineSurface;
00013 
00014   struct Frame{
00015     BSplineSurface key;
00016     char *name;
00017     double time;
00018     double scale;
00019   };
00020 
00031   class KeyFramer : public util::FileObject {
00032 
00033   public:
00034 
00035     KeyFramer();
00036     KeyFramer(const KeyFramer&);
00037     ~KeyFramer();
00038 
00039     bool Load(const char* fname);
00040     bool Save(const char* fname);
00041 
00042     void reread()
00043     {
00044       std::string fn = getFilename();
00045       Load(fn.c_str());
00046     }
00047 
00048     void SetParent(QGLWidget *parent)
00049     {gl_context=parent;}
00050 
00051     int FindFrame(double time);
00052     double FindTime(unsigned int frame);
00053     void SetTime(double time);
00054     void SetFrame(unsigned int frame);
00055     double GetTime()
00056     {return sel_time;}
00057     unsigned int GetFrame()
00058     {return sel_frame;};
00059 
00060     void AddFrame();
00061     void DeleteFrame();
00062     void LoadSurface(const char* fname);
00063 
00064     void DisplayTime(double time);
00065     void DisplayFrame(unsigned int frame);
00066     void DisplayTimeline();
00067 
00068     //Not implemented
00069     void SetBoundingBox(Point2d min, Point2d max);
00070     void SetTime(Point3d pos);
00071     void SelectClosest(Point3d pos);
00072     void MoveSelect(Point3d pos);
00073     void AdvanceTime(double time_increment);
00074     void SetScale(double scale)
00075     { if(scale>0)keys[sel_frame].scale=scale;}
00076     void SetPrecision(int u,int v)
00077     { u_prec=u;v_prec=v;};
00078     BSplineSurface GetSurfaceFrame(unsigned int frame);
00079     BSplineSurface GetSurfaceFrame();
00080     BSplineSurface GetSurfaceTime(double time);
00081     BSplineSurface GetSurfaceTime();
00082 
00083   private:
00084     int u_prec; int v_prec;
00085     int max_u,max_v;
00086     QGLWidget *gl_context;
00087     Point2d min;
00088     Point2d max;
00089     std::vector< Frame > keys;
00090     unsigned int sel_frame;
00091     double sel_time;
00092     double time_interval[2];
00093   };
00094 
00095 } // namespace util
00096 #endif 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Fri May 31 15:37:53 2013 for VVE by  doxygen 1.6.3