|
Viewer
A plugin-based viewer for learning Computer Graphics and OpenGL
|
00001 #ifndef GLWIDGET_H 00002 #define GLWIDGET_H 00003 00004 #include "GL/glew.h" 00005 #include "scene.h" 00006 #include "camera.h" 00007 //#include "basicplugin.h" 00008 #include <QPluginLoader> 00009 #include <QtOpenGL/qgl.h> 00010 #include <QKeyEvent> 00011 #include <QString> 00012 #include <QFileDialog> 00013 #include <QTimer> 00014 #include <iostream> 00015 #include <vector> 00016 00017 class BasicPlugin; 00018 00019 // see Qt docs, "Creating shared libraries" 00020 #ifdef PLUGINGLWIDGET_LIBRARY 00021 #define PLUGINGLWIDGET_EXPORT Q_DECL_EXPORT 00022 #else 00023 #define PLUGINGLWIDGET_EXPORT Q_DECL_IMPORT 00024 #endif 00025 00031 class GLWidget : public QGLWidget 00032 { 00033 Q_OBJECT 00034 00035 public: 00039 PLUGINGLWIDGET_EXPORT GLWidget(QWidget * parent); 00040 00044 PLUGINGLWIDGET_EXPORT Scene* scene(); 00045 00049 PLUGINGLWIDGET_EXPORT Camera* camera(); 00050 00054 PLUGINGLWIDGET_EXPORT void setPluginPath(const QString &); 00055 00056 public slots: 00061 PLUGINGLWIDGET_EXPORT void addObject(); 00062 00067 PLUGINGLWIDGET_EXPORT void addObjectFromFile(const QString& filename); 00068 00072 PLUGINGLWIDGET_EXPORT void resetCamera(); 00073 00077 PLUGINGLWIDGET_EXPORT void drawAxes() const; 00078 00082 PLUGINGLWIDGET_EXPORT Box boundingBoxIncludingAxes() const; 00083 00088 PLUGINGLWIDGET_EXPORT void loadPlugin(); 00089 00093 PLUGINGLWIDGET_EXPORT void loadPlugins(const QStringList& list); 00094 00098 PLUGINGLWIDGET_EXPORT void loadDefaultPlugins(); 00099 00100 00101 private: 00102 void help(void); 00103 void showPlugins() const; 00104 00105 virtual void initializeGL(); 00106 virtual void paintGL( void ); 00107 virtual void resizeGL (int width, int height); 00108 00109 virtual void keyPressEvent(QKeyEvent *e); 00110 virtual void mousePressEvent( QMouseEvent *e); 00111 virtual void mouseReleaseEvent( QMouseEvent *); 00112 virtual void mouseMoveEvent(QMouseEvent *e); 00113 virtual void keyReleaseEvent ( QKeyEvent *e); 00114 virtual void wheelEvent ( QWheelEvent *e); 00115 00116 private: 00117 void resetPluginsToDefaults(); 00118 Scene pscene; 00119 Camera pcamera; 00120 QString pluginPath; 00121 00122 BasicPlugin* drawPlugin; 00123 vector<QPluginLoader*> plugins; 00124 }; 00125 00126 #endif
1.7.6.1