00001 #ifndef MODELPREVIEW_H_ 00002 #define MODELPREVIEW_H_ 00003 00004 #include "imodel.h" 00005 #include "math/matrix.h" 00006 00007 #include <gtk/gtk.h> 00008 #include <igl.h> 00009 #include <string> 00010 00011 namespace ui 00012 { 00018 class ModelPreview 00019 { 00020 // Top-level widget 00021 GtkWidget* _widget; 00022 00023 // GL widget 00024 GtkWidget* _glWidget; 00025 00026 // Toolbar buttons 00027 GtkToolItem* _drawBBox; 00028 00029 // Current model to display 00030 model::IModelPtr _model; 00031 00032 // Current distance between camera and preview 00033 GLfloat _camDist; 00034 00035 // Current rotation matrix 00036 Matrix4 _rotation; 00037 00038 private: 00039 00040 /* GTK CALLBACKS */ 00041 00042 static void callbackGLDraw (GtkWidget*, GdkEventExpose*, ModelPreview*); 00043 static void callbackGLMotion (GtkWidget*, GdkEventMotion*, ModelPreview*); 00044 static void callbackGLScroll (GtkWidget*, GdkEventScroll*, ModelPreview*); 00045 static void callbackToggleBBox (GtkToggleToolButton*, ModelPreview*); 00046 00047 public: 00048 00051 ModelPreview (); 00052 00055 ~ModelPreview (); 00056 00062 void setSize (int size); 00063 00067 void initialisePreview (); 00068 00075 void setModel (const std::string& model); 00076 00082 void setSkin (const std::string& skin); 00083 00086 operator GtkWidget* () 00087 { 00088 return _widget; 00089 } 00090 00093 model::IModel* getModel () 00094 { 00095 return _model.get(); 00096 } 00097 }; 00098 00099 } 00100 00101 #endif /*MODELPREVIEW_H_*/