X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/graphlib.git/blobdiff_plain/59e4744b75d5d4f67c6fe21dec20089a7c43cf80..6ea665deb4a5801011a86427301939f0a330d0db:/DrawingWindow.h diff --git a/DrawingWindow.h b/DrawingWindow.h index d1c174b..cf3ff9c 100644 --- a/DrawingWindow.h +++ b/DrawingWindow.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -11,6 +12,7 @@ #include #include #include +#include class DrawingThread; @@ -43,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); @@ -51,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) @@ -79,6 +97,8 @@ private: QBasicTimer timer; QMutex imageMutex; + QMutex inputMutex; + QWaitCondition inputCondition; QMutex syncMutex; QWaitCondition syncCondition; bool terminateThread; @@ -87,6 +107,9 @@ private: QImage *image; QPainter *painter; + QPoint mousePos; + Qt::MouseButton mouseButton; + bool dirtyFlag; QRect dirtyRect; @@ -94,8 +117,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();