#include <QBasicTimer>
#include <QColor>
+#include <QFont>
#include <QImage>
#include <QMutex>
#include <QPainter>
#include <QWaitCondition>
#include <QWidget>
#include <Qt>
+#include <string>
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,
~DrawingWindow();
- //! Largeur de la fenêtre.
const int width;
- //! Hauteur de la fenêtre.
const int height;
void setColor(unsigned int color);
void setBgColor(const char *name);
void setBgColor(float red, float green, float blue);
+ const QFont &getFont() const;
+ void setFont(const QFont &font);
+
void clearGraph();
void drawPoint(int x, int y);
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:
void closeEvent(QCloseEvent *ev);
void customEvent(QEvent *ev);
+ void mousePressEvent(QMouseEvent *ev);
void keyPressEvent(QKeyEvent *ev);
void paintEvent(QPaintEvent *ev);
void showEvent(QShowEvent *ev);
QBasicTimer timer;
QMutex imageMutex;
+ QMutex mouseMutex;
+ QWaitCondition mouseCondition;
QMutex syncMutex;
QWaitCondition syncCondition;
bool terminateThread;
QImage *image;
QPainter *painter;
+ QPoint mousePos;
+ Qt::MouseButton mouseButton;
+
bool dirtyFlag;
QRect dirtyRect;
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();