#include <QColor>
#include <QImage>
#include <QMutex>
+#include <QPainter>
+#include <QPen>
#include <QRect>
#include <QWaitCondition>
#include <QWidget>
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();
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);
+ 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);
void timerEvent(QTimerEvent *ev);
private:
+ //! Intervalle de temps entre deux rendus (ms)
static const int paintInterval = 33;
QBasicTimer timer;
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);
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: