Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Updated.
[graphlib.git] / DrawingWindow.h
index 73fdc26..732183a 100644 (file)
 
 class DrawingThread;
 
-/*!
- * Fenêtre de dessin.
- *  
- */
 class DrawingWindow: public QWidget {
 public:
-    //! Type de la fonction de dessin, passée en paramètre de construction.
     typedef void (*ThreadFunction)(DrawingWindow &);
 
-    //! Largeur par défaut de la fenêtre.
     static const int DEFAULT_WIDTH = 640;
-    //! Hauteur par défaut de la fenêtre.
     static const int DEFAULT_HEIGHT = 480;
 
     DrawingWindow(ThreadFunction fun,
@@ -39,9 +32,7 @@ public:
 
     ~DrawingWindow();
 
-    //! Largeur de la fenêtre.
     const int width;
-    //! Hauteur de la fenêtre.
     const int height;
 
     void setColor(unsigned int color);
@@ -66,6 +57,8 @@ public:
 
     unsigned int getPointColor(int x, int y);
 
+    bool waitMousePress(int &x, int &y, int &button,
+                        unsigned long time = ULONG_MAX);
     bool sync(unsigned long time = ULONG_MAX);
 
     void closeGraph();
@@ -77,6 +70,7 @@ public:
 protected:
     void closeEvent(QCloseEvent *ev);
     void customEvent(QEvent *ev);
+    void mousePressEvent(QMouseEvent *ev);
     void keyPressEvent(QKeyEvent *ev);
     void paintEvent(QPaintEvent *ev);
     void showEvent(QShowEvent *ev);
@@ -88,6 +82,8 @@ private:
 
     QBasicTimer timer;
     QMutex imageMutex;
+    QMutex mouseMutex;
+    QWaitCondition mouseCondition;
     QMutex syncMutex;
     QWaitCondition syncCondition;
     bool terminateThread;
@@ -96,6 +92,9 @@ private:
     QImage *image;
     QPainter *painter;
 
+    QPoint mousePos;
+    Qt::MouseButton mouseButton;
+
     bool dirtyFlag;
     QRect dirtyRect;