X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/graphlib.git/blobdiff_plain/c97d3f98f912c1dbaadf8309a983915d5c5d721e..b5a1582372c4bd628a4a0f81c47a4cbb455983c2:/DrawingWindow.h?ds=sidebyside diff --git a/DrawingWindow.h b/DrawingWindow.h index 17e9d0d..732183a 100644 --- a/DrawingWindow.h +++ b/DrawingWindow.h @@ -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); @@ -108,6 +116,12 @@ private: void dirty(const QRect &rect); void mayUpdate(); + void realSync(); + void realDrawText(int x, int y, const char *text, int flags); }; #endif // !DRAWING_WINDOW_H + +// Local variables: +// mode: c++ +// End: