Viewer
A plugin-based viewer for learning Computer Graphics and OpenGL
glwidget/include/glwidget.h
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
 All Classes Functions