#ifndef MESH_VIEWER_H #define MESH_VIEWER_H #define GL_GLEXT_PROTOTYPES #include "mesh_processor.h" #include "mesh_view.h" #include #include #include #include #include #include #include #include #define WIREFRAME_COLOR 0, 0, 0 #define FOV 70 using namespace OpenMesh; class MeshViewer : public QOpenGLWidget { Q_OBJECT std::list meshes; QOpenGLShaderProgram program; QMatrix4x4 proj; QMatrix4x4 rot, rot_start; GLfloat cam_dist = 1; QPoint mouse_pos; public: MeshViewer(QWidget *parent=nullptr); virtual QSize sizeHint() const override; void initializeGL() override; void resizeGL(int w, int h) override; void paintGL() override; public slots: void addMesh(const MeshProcessor &mesh); void removeMesh(const MeshProcessor &mesh); protected: virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); virtual void wheelEvent(QWheelEvent *e); signals: void initialized(); }; #endif