Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Updated.
[graphlib.git] / DrawingWindow.h
index 97474e7..732183a 100644 (file)
@@ -22,20 +22,19 @@ public:
     static const int DEFAULT_HEIGHT = 480;
 
     DrawingWindow(ThreadFunction fun,
-                  int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
+                  int width_ = DEFAULT_WIDTH, int height_ = DEFAULT_HEIGHT);
     DrawingWindow(QWidget *parent,
                   ThreadFunction fun,
-                  int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
+                  int width_ = DEFAULT_WIDTH, int height_ = DEFAULT_HEIGHT);
     DrawingWindow(QWidget *parent, Qt::WindowFlags flags,
                   ThreadFunction fun,
-                  int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
+                  int width_ = DEFAULT_WIDTH, int height_ = DEFAULT_HEIGHT);
 
     ~DrawingWindow();
 
     const int width;
     const int height;
 
-    // http://www.w3.org/TR/SVG/types.html#ColorKeywords
     void setColor(unsigned int color);
     void setColor(const char *name);
     void setColor(float red, float green, float blue);
@@ -58,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();
@@ -69,16 +70,20 @@ 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);
     void timerEvent(QTimerEvent *ev);
 
 private:
+    //! Intervalle de temps entre deux rendus (ms)
     static const int paintInterval = 33;
 
     QBasicTimer timer;
     QMutex imageMutex;
+    QMutex mouseMutex;
+    QWaitCondition mouseCondition;
     QMutex syncMutex;
     QWaitCondition syncCondition;
     bool terminateThread;
@@ -87,12 +92,15 @@ private:
     QImage *image;
     QPainter *painter;
 
+    QPoint mousePos;
+    Qt::MouseButton mouseButton;
+
     bool dirtyFlag;
     QRect dirtyRect;
 
     DrawingThread *thread;
 
-    void initialize(ThreadFunction f);
+    void initialize(ThreadFunction fun);
 
     void setColor(const QColor& color);
     void setBgColor(const QColor& color);
@@ -113,3 +121,7 @@ private:
 };
 
 #endif // !DRAWING_WINDOW_H
+
+// Local variables:
+// mode: c++
+// End: