00001 #ifndef VIEWER_H 00002 #define VIEWER_H 00003 00004 #include <QGLViewer/qglviewer.h> 00005 #include <vector> 00006 00007 #include "mesh.h" 00008 00009 class Viewer : public QGLViewer 00010 { 00011 public: 00013 Viewer(QWidget *parent,const char *name); 00014 ~Viewer(); 00015 00017 void changeMesh(const char*); 00018 00020 void saveMesh(const char*); 00021 00023 void toggleDrawEdges(); 00024 00026 void toggleInvertNormals(); 00027 00029 void toggleDisplayRep(); 00030 00032 void toggleSmoothShading(); 00033 00034 // rassemble les operations a effectuer une fois le snake termine 00035 // renvoie true si tout s'est bien passe 00036 void computeDetection() ; 00037 00038 // bascule le mode affichage Mesh/Local Region 00039 void switch2d3d() ; 00040 00041 // Different display modes 00042 // recupere de l interface 00043 enum DisplayMode { SURF, WIRE, PTS }; 00044 DisplayMode displayMode_; 00045 00046 DisplayMode dispMode() const; 00047 void dispMode(DisplayMode); 00048 00049 protected: 00050 00051 Mesh *m; 00052 00053 bool drawMesh_; 00054 00056 bool drawUserSnake_; 00057 00059 bool drawLocalRegion_; 00060 00061 bool drawEdges_; 00062 bool invertNormals_; 00063 bool smooth_; 00064 00066 bool meshMode_; 00067 00072 virtual void draw(); 00073 00079 virtual void drawWithNames(); 00080 00081 // Selection procedures 00082 00086 virtual void mousePressEvent(QMouseEvent* e); 00087 00092 virtual void postSelection(const QPoint& point); 00093 00094 // Other procedures 00095 virtual void init(); 00096 virtual QString helpString() const; 00097 00098 private : 00099 qglviewer::Vec orig, dir, selectedPoint ; 00100 }; 00101 00102 #endif