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);
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();
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;