/*====================ÉCOLE POLYTECHNIQUE DE MONTRÉAL============================

	NOM DU FICHIER :glEditeurWidget.h

	DESCRIPTION :	Ce fichier contient la déclaration du widget qui sert à 
					l'affichage d'OpenGL.

	AUTEUR : Martin Bisson, Anne-Marie Buki, Mylène Denis & Jean-François Pérusse

	DATE DE CRÉATION : 2004-3-17

	MISES À JOUR :

===============================================================================*/

#ifndef GLEDITEURWIDGET_H
#define GLEDITEURWIDGET_H

#include <fstream>
#include <qgl.h>
#include <qevent.h>

#define BUTTON_DOWN true
#define BUTTON_UP false

class CEditeurTerrain;

class glEditeurWidget : public QGLWidget
{
    Q_OBJECT
    
public:
    glEditeurWidget(QWidget* parent, const char* nom);
    ~glEditeurWidget();
    
    CEditeurTerrain const* getTerrainActif() const;
    void setTerrainActif(CEditeurTerrain*);
    void SetDrawingPixmap(bool DrawingPixmap) { this->DrawingPixmap = DrawingPixmap; }
    
    void UpdateWidget();
    
signals:
    // signal qui est envoyé quand la souris est appuyée ou relâché
    void MouseClick(Qt::ButtonState, bool, float, float);
    // signal qui est envoyé quand la souris est déplacée
    void MouseMove(Qt::ButtonState, float, float);
    
protected:
    virtual void initializeGL();
    virtual void paintGL();
    virtual void resizeGL(int w, int h);
    
    virtual void mousePressEvent(QMouseEvent * e);
    virtual void mouseReleaseEvent(QMouseEvent * e);
    virtual void mouseMoveEvent(QMouseEvent * e);
    virtual void resizeEvent(QResizeEvent * e);
    
private:
    CEditeurTerrain* TerrainActif;
    bool DrawingPixmap;
};

#endif
