Source

3dmaze / renderwidget.h

/* Copyright (C) 2010 by Eric Waller 
  
   Build and display a maze in either 2-D or 3-D

   This program 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 3 of the License, or
   (at your option) any later version.
   
   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.

   ewwaller@gmail.com

   Revision History

   Date        Author      Description
   ---------   ----------  -----------
   2010.7.20   E Waller    Initial Release
*/

#ifndef RENDERWIDGET_H
#define RENDERWIDGET_H

#include <QGLWidget>
#include "mazeengine.h"

class RenderWidget : public QGLWidget
{
  Q_OBJECT
    
    public:
  RenderWidget(QWidget *parent=0);
  ~RenderWidget();
  void SetMazeEngine(MazeEngine *maze, bool newShowSolution);
  QSize minimumSizeHint() const;
  QSize sizeHint() const;
  public slots:
  void setXRotation(int angle);
  void setYRotation(int angle);
  void setZRotation(int angle);
  void setX(double x);
  void setY(double y);
  void setZ(double z);
  void update();
 signals:
  void xRotationChanged(int angle);
  void yRotationChanged(int angle);
  void zRotationChanged(int angle);
  void xChanged (double x);
  void yChanged (double y);
  void zChanged (double z);
  void telemetry(QString theString);
 protected:
  void initializeGL();
  void paintGL();
  void resizeGL(int width, int height);
  void mousePressEvent(QMouseEvent *event);
  void mouseMoveEvent(QMouseEvent *event);
  void mouseReleaseEvent(QMouseEvent *event);
 private:
  GLuint makeObject();
  void quad(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2, GLdouble z, bool floor=false);
  void extrude(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
  void normalizeAngle(int *angle);
  MazeEngine* theMaze;
  GLuint object;
  int xRot;
  int yRot;
  int zRot;
  double eyeX;
  double eyeY;
  double eyeZ;
  QPoint lastPos;
  QColor wallColor;
  QColor pathColor;
  QColor capColor;
  QColor backgroundColor;
  bool ShowSolution;
  GLuint texture;
  GLuint floor;
  int motionState;
  int mousedx,mousedy;
  QTimer *timer;
  double scale;
  
};

#endif // RENDERWIDGET_H
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.