Viewer
A plugin-based viewer for learning Computer Graphics and OpenGL
interfaces/basicplugin.h
00001 #ifndef _BASIC_PLUGIN_H
00002 #define _BASIC_PLUGIN_H
00003 
00004 #include "GL/glew.h"
00005 #include <QtPlugin>
00006 #include <QWidget>
00007 #include "glwidget.h"
00008 
00009 //class GLWidget;
00010 
00034 class BasicPlugin
00035 {   
00036 public:
00040     BasicPlugin() : pdrawPlugin(0) {} 
00041 
00045     virtual ~BasicPlugin() {}
00046 
00047     // general methods
00054     virtual void onPluginLoad() {}
00055 
00060     virtual void onObjectAdd() {}
00061 
00062     // methods for "effect" plugins
00071     virtual void preFrame() {}
00072 
00079     virtual void postFrame() {}
00080     
00081     // methods for "action" plugins 
00085     virtual void keyPressEvent ( QKeyEvent *  ){}
00089     virtual void keyReleaseEvent ( QKeyEvent *  ) {}
00093     virtual void mouseMoveEvent ( QMouseEvent *  ) {}
00097     virtual void mousePressEvent ( QMouseEvent *  ) {}
00101     virtual void mouseReleaseEvent ( QMouseEvent *  ) {}
00105     virtual void wheelEvent ( QWheelEvent *  ) {}
00106 
00107     // methods for "render" plugins
00121     virtual bool paintGL() {return false;}
00122 
00123     // methods for "draw" plugins
00154     virtual bool drawScene() {return false;}
00155 
00156     // access to application components
00160     Scene* scene() {return pglwidget->scene();}
00161 
00165     Camera* camera() {return pglwidget->camera();}
00166 
00171     BasicPlugin* drawPlugin() {return pdrawPlugin;}
00172 
00176     GLWidget* glwidget() {return pglwidget;}
00177 
00178     // internal methods
00179     void setWidget(GLWidget* glwidget) {pglwidget = glwidget; }
00180     void setDrawPlugin(BasicPlugin* drawPlugin) {pdrawPlugin = drawPlugin;}
00181 
00182  private:
00183     GLWidget* pglwidget;
00184     BasicPlugin* pdrawPlugin;
00185  };
00186 
00187 Q_DECLARE_INTERFACE(BasicPlugin, "edu.upc.fib.graug.BasicPlugin/1.0"); 
00188 
00189 #endif
00190  
00191  
 All Classes Functions