Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add some words on installation.
[graphlib.git] / DrawingWindow.h
index 73fdc26..cf3ff9c 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <QBasicTimer>
 #include <QColor>
+#include <QFont>
 #include <QImage>
 #include <QMutex>
 #include <QPainter>
 #include <QWaitCondition>
 #include <QWidget>
 #include <Qt>
+#include <string>
 
 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 +34,7 @@ public:
 
     ~DrawingWindow();
 
-    //! Largeur de la fenêtre.
     const int width;
-    //! Hauteur de la fenêtre.
     const int height;
 
     void setColor(unsigned int color);
@@ -52,6 +45,13 @@ public:
     void setBgColor(const char *name);
     void setBgColor(float red, float green, float blue);
 
+    void setPenWidth(int width);
+
+    const QFont &getFont() const;
+    void setFont(const QFont &font);
+
+    void setAntialiasing(bool state);
+
     void clearGraph();
 
     void drawPoint(int x, int y);
@@ -60,27 +60,36 @@ public:
     void fillRect(int x1, int y1, int x2, int y2);
     void drawCircle(int x, int y, int r);
     void fillCircle(int x, int y, int r);
+    void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3);
+    void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3);
 
     void drawText(int x, int y, const char *text, int flags = 0);
+    void drawText(int x, int y, const std::string &text, int flags = 0);
     void drawTextBg(int x, int y, const char *text, int flags = 0);
+    void drawTextBg(int x, int y, const std::string &text, int flags = 0);
 
-    unsigned int getPointColor(int x, int y);
+    unsigned int getPointColor(int x, int y) const;
 
+    bool waitMousePress(int &x, int &y, int &button,
+                        unsigned long time = ULONG_MAX);
     bool sync(unsigned long time = ULONG_MAX);
 
     void closeGraph();
 
-    void sleep(unsigned long secs);
-    void msleep(unsigned long msecs);
-    void usleep(unsigned long usecs);
+    static void sleep(unsigned long secs);
+    static void msleep(unsigned long msecs);
+    static void usleep(unsigned long usecs);
 
 protected:
+    //! \cond show_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);
+    //! \endcond
 
 private:
     //! Intervalle de temps entre deux rendus (ms)
@@ -88,6 +97,8 @@ private:
 
     QBasicTimer timer;
     QMutex imageMutex;
+    QMutex inputMutex;
+    QWaitCondition inputCondition;
     QMutex syncMutex;
     QWaitCondition syncCondition;
     bool terminateThread;
@@ -96,6 +107,9 @@ private:
     QImage *image;
     QPainter *painter;
 
+    QPoint mousePos;
+    Qt::MouseButton mouseButton;
+
     bool dirtyFlag;
     QRect dirtyRect;
 
@@ -103,8 +117,8 @@ private:
 
     void initialize(ThreadFunction fun);
 
-    void setColor(const QColorcolor);
-    void setBgColor(const QColorcolor);
+    void setColor(const QColor &color);
+    void setBgColor(const QColor &color);
     QColor getColor();
     QColor getBgColor();