#ifndef OPENGLSCENE_H #define OPENGLSCENE_H #include "point3d.h" #include class Model; class OpenGLScene : public QGraphicsScene { Q_OBJECT public: OpenGLScene(); void drawBackground(QPainter *painter, const QRectF &rect); public slots: void setModel(Model *model); void enableAutoRotate(bool enabled); void enableWireframe(bool enabled); void enableNormals(bool enabled); void setLightPosition(int pos); void setModelColor(QRgb color); void setBackgroundColor(QRgb color); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); void mouseMoveEvent(QGraphicsSceneMouseEvent *event); void wheelEvent(QGraphicsSceneWheelEvent * wheelEvent); private: void updateMatrix(); void updateRotation(const QPointF &last, const QPointF ¤t); bool m_wireframeEnabled; bool m_normalsEnabled; bool m_autoRotate; bool m_rotating; Point3d m_axis; float m_angle; float m_lightPos; float m_distance; QRgb m_backgroundColor; QRgb m_modelColor; Model *m_model; float m_matrix[4][4]; }; #endif