/* This file is part of moth. moth is a program for creating and editing textured 3D models. Copyright (C) 2004 Peter Uray. moth is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. moth is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with moth; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __MGLVIEW_H__ #define __MGLVIEW_H__ #include #include #include class MGLView : public QGLWidget { Q_OBJECT signals: // No signals. public slots: // No slots. public: enum MAxis { NoAxis = 0, XAxis, YAxis, ZAxis }; /// The constructor. MGLView(QWidget *parent, const char *name); /// Specify the background color. void setBackgroundColor(QColor color); protected: virtual void showEvent(QShowEvent *e); /// render this view. virtual void renderView(void); /// Basic mouse event handlers. virtual void mousePressEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void mouseReleaseEvent(QMouseEvent *event); virtual void mouseDoubleClickEvent(QMouseEvent *event); /// Basic mouse event handler redirectors. virtual void onMousePressEvent(void); virtual void onMouseMoveEvent(void); virtual void onMouseReleaseEvent(void); virtual void onMouseDoubleClickEvent(void); /// High level event handlers. virtual void onSelectModel(void) { std::cout << "onSelectModel\n"; } virtual void onSelectShape(void) { std::cout << "onSelectShape\n"; } virtual void onSelectLight(void) { std::cout << "onSelectLight\n"; } virtual void onZoomIn(void) { std::cout << "onZoomIn\n"; } virtual void onZoomOut(void) { std::cout << "onZoomOut\n"; } virtual void onMoveModelInit(void) { std::cout << "onMoveModelInit\n"; } virtual void onMoveModelPerform(void) { std::cout << "onMoveModelPerform\n"; } virtual void onMoveModelFinish(void) { std::cout << "onMoveModelFinish\n"; } virtual void onMoveShapeInit(void) { std::cout << "onMoveShapeInit\n"; } virtual void onMoveShapePerform(void) { std::cout << "onMoveShapePerform\n"; } virtual void onMoveShapeFinish(void) { std::cout << "onMoveShapeFinish\n"; } virtual void onMoveLightInit(void) { std::cout << "onMoveLightInit\n"; } virtual void onMoveLightPerform(void) { std::cout << "onMoveLightPerform\n"; } virtual void onMoveLightFinish(void) { std::cout << "onMoveLightFinish\n"; } virtual void onRotateModelInit(void) { std::cout << "onRotateModelInit\n"; } virtual void onRotateModelPerform(void) { std::cout << "onRotateModelPerform\n"; } virtual void onRotateModelFinish(void) { std::cout << "onRotateModelFinish\n"; } virtual void onRotateShapeInit(void) { std::cout << "onRotateShapeInit\n"; } virtual void onRotateShapePerform(void) { std::cout << "onRotateShapePerform\n"; } virtual void onRotateShapeFinish(void) { std::cout << "onRotateShapeFinish\n"; } virtual void onRotateLightInit(void) { std::cout << "onRotateLightInit\n"; } virtual void onRotateLightPerform(void) { std::cout << "onRotateLightPerform\n"; } virtual void onRotateLightFinish(void) { std::cout << "onRotateLightFinish\n"; } virtual void onScaleModelInit(void) { std::cout << "onScaleModelInit\n"; } virtual void onScaleModelPerform(void) { std::cout << "onScaleModelPerform\n"; } virtual void onScaleModelFinish(void) { std::cout << "onScaleModelFinish\n"; } virtual void onScaleShapeInit(void) { std::cout << "onScaleShapeInit\n"; } virtual void onScaleShapePerform(void) { std::cout << "onScaleShapePerform\n"; } virtual void onScaleShapeFinish(void) { std::cout << "onScaleShapeFinish\n"; } virtual void onSelectVertexInit(void) { std::cout << "onSelectVertexInit\n"; } virtual void onSelectVertexPerform(void) { std::cout << "onSelectVertexPerform\n"; } virtual void onSelectVertexFinish(void) { std::cout << "onSelectVertexFinish\n"; } virtual void onCreateVertex(void) { std::cout << "onCreateVertex\n"; } virtual void onCreateTriangle(void) { std::cout << "onCreateTriangle\n"; } virtual void onMoveVertexInit(void) { std::cout << "onMoveVertexInit\n"; } virtual void onMoveVertexPerform(void) { std::cout << "onMoveVertexPerform\n"; } virtual void onMoveVertexFinish(void) { std::cout << "onMoveVertexFinish\n"; } virtual void onRotateVertexInit(void) { std::cout << "onRotateVertexInit\n"; } virtual void onRotateVertexPerform(void) { std::cout << "onRotateVertexPerform\n"; } virtual void onRotateVertexFinish(void) { std::cout << "onRotateVertexFinish\n"; } virtual void onScaleVertexInit(void) { std::cout << "onScaleVertexInit\n"; } virtual void onScaleVertexPerform(void) { std::cout << "onScaleVertexPerform\n"; } virtual void onScaleVertexFinish(void) { std::cout << "onScaleVertexFinish\n"; } virtual void onMagnetInit(void) { std::cout << "onMagnetInit\n"; } virtual void onMagnetPerform(void) { std::cout << "onMagnetPerform\n"; } virtual void onMagnetFinish(void) { std::cout << "onMagnetFinish\n"; } virtual void onFlipEdge(void) { std::cout << "onFlipEdge\n"; } virtual void onSnapToMaster(void) { std::cout << "onSnapToMaster\n"; } virtual void onRotateView(void) { std::cout << "onRotateView\n"; } virtual void onZoomView(void) { std::cout << "onZoomView\n"; } virtual void onMoveView(void) { std::cout << "onMoveView\n"; } virtual void onResetView(void) { std::cout << "onResetView\n"; } /// Returns a string containing information on the mouse position virtual QString mousePosition3D(void) { return QString("Not Available"); } /// Derived from QGLWidget. virtual void initializeGL(void); /// Derived from QGLWidget. virtual void resizeGL(int w, int h); /// Derived from QGLWidget. virtual void paintGL(void); /// The background color. QColor _backgroundColor; /// The previous mouse position. int _oldMouseX, _oldMouseY; /// The current mouse position int _newMouseX, _newMouseY; int _mouseDX, _mouseDY; float _mouseDXF, _mouseDYF; float _mouseDS; /// The combined mouse button / keyboard state as related by Qt. ButtonState _state; bool _initFlag; }; #endif