X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/graphlib.git/blobdiff_plain/b07bb1122bca0acd87b8183b4426334bbffd6ea4..e1e6264f7d64fc0fc64263e55099e6a993596520:/DrawingWindow.h diff --git a/DrawingWindow.h b/DrawingWindow.h index 79544dc..73fdc26 100644 --- a/DrawingWindow.h +++ b/DrawingWindow.h @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include #include @@ -12,32 +14,43 @@ 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, - 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(); + //! Largeur de la fenêtre. const int width; + //! Hauteur de la fenêtre. const int height; - // http://www.w3.org/TR/SVG/types.html#ColorKeywords - void setColor(float red, float green, float blue); + void setColor(unsigned int color); void setColor(const char *name); - void setBgColor(float red, float green, float blue); + void setColor(float red, float green, float blue); + + void setBgColor(unsigned int color); void setBgColor(const char *name); + void setBgColor(float red, float green, float blue); void clearGraph(); @@ -48,8 +61,15 @@ public: void drawCircle(int x, int y, int r); void fillCircle(int x, int y, int r); + void drawText(int x, int y, const char *text, int flags = 0); + void drawTextBg(int x, int y, const char *text, int flags = 0); + + unsigned int getPointColor(int x, int y); + bool sync(unsigned long time = ULONG_MAX); + void closeGraph(); + void sleep(unsigned long secs); void msleep(unsigned long msecs); void usleep(unsigned long usecs); @@ -63,6 +83,7 @@ protected: void timerEvent(QTimerEvent *ev); private: + //! Intervalle de temps entre deux rendus (ms) static const int paintInterval = 33; QBasicTimer timer; @@ -75,17 +96,17 @@ private: QImage *image; QPainter *painter; - QColor fgColor; - QColor bgColor; - bool dirtyFlag; QRect dirtyRect; DrawingThread *thread; - void initialize(ThreadFunction f); + void initialize(ThreadFunction fun); - void applyColor(); + void setColor(const QColor& color); + void setBgColor(const QColor& color); + QColor getColor(); + QColor getBgColor(); void safeLock(QMutex &mutex); void safeUnlock(QMutex &mutex); @@ -96,6 +117,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: