X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/graphlib.git/blobdiff_plain/560e71cddf71dc432454f027fe20d55442e28ac9..HEAD:/DrawingWindow.h diff --git a/DrawingWindow.h b/DrawingWindow.h index 97474e7..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; @@ -22,20 +24,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); @@ -44,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); @@ -52,33 +60,45 @@ 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) static const int paintInterval = 33; QBasicTimer timer; QMutex imageMutex; + QMutex inputMutex; + QWaitCondition inputCondition; QMutex syncMutex; QWaitCondition syncCondition; bool terminateThread; @@ -87,15 +107,18 @@ 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); + void setColor(const QColor &color); + void setBgColor(const QColor &color); QColor getColor(); QColor getBgColor(); @@ -113,3 +136,7 @@ private: }; #endif // !DRAWING_WINDOW_H + +// Local variables: +// mode: c++ +// End: