X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/graphlib.git/blobdiff_plain/e1e6264f7d64fc0fc64263e55099e6a993596520..fa4e18f5aa1e0f787885f5860a5f36af2db4cd39:/DrawingWindow.h diff --git a/DrawingWindow.h b/DrawingWindow.h index 73fdc26..c38d9bd 100644 --- a/DrawingWindow.h +++ b/DrawingWindow.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -11,21 +12,15 @@ #include #include #include +#include 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,9 @@ public: void setBgColor(const char *name); void setBgColor(float red, float green, float blue); + const QFont &getFont() const; + void setFont(const QFont &font); + void clearGraph(); void drawPoint(int x, int y); @@ -60,23 +56,30 @@ 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: 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 +91,8 @@ private: QBasicTimer timer; QMutex imageMutex; + QMutex mouseMutex; + QWaitCondition mouseCondition; QMutex syncMutex; QWaitCondition syncCondition; bool terminateThread; @@ -96,6 +101,9 @@ private: QImage *image; QPainter *painter; + QPoint mousePos; + Qt::MouseButton mouseButton; + bool dirtyFlag; QRect dirtyRect; @@ -103,8 +111,8 @@ private: void initialize(ThreadFunction fun); - void setColor(const QColor& color); - void setBgColor(const QColor& color); + void setColor(const QColor &color); + void setBgColor(const QColor &color); QColor getColor(); QColor getBgColor();