1 #ifndef DRAWING_WINDOW_H
2 #define DRAWING_WINDOW_H
11 #include <QWaitCondition>
17 class DrawingWindow: public QWidget {
19 typedef void (*ThreadFunction)(DrawingWindow &);
21 static const int DEFAULT_WIDTH = 640;
22 static const int DEFAULT_HEIGHT = 480;
24 DrawingWindow(ThreadFunction fun,
25 int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
26 DrawingWindow(QWidget *parent,
28 int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
29 DrawingWindow(QWidget *parent, Qt::WindowFlags flags,
31 int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
38 // http://www.w3.org/TR/SVG/types.html#ColorKeywords
39 void setColor(unsigned int color);
40 void setColor(const char *name);
41 void setColor(float red, float green, float blue);
43 void setBgColor(unsigned int color);
44 void setBgColor(const char *name);
45 void setBgColor(float red, float green, float blue);
49 void drawPoint(int x, int y);
50 void drawLine(int x1, int y1, int x2, int y2);
51 void drawRect(int x1, int y1, int x2, int y2);
52 void fillRect(int x1, int y1, int x2, int y2);
53 void drawCircle(int x, int y, int r);
54 void fillCircle(int x, int y, int r);
56 void drawText(int x, int y, const char *text, int flags = 0);
57 void drawTextBg(int x, int y, const char *text, int flags = 0);
59 unsigned int getPointColor(int x, int y);
61 bool sync(unsigned long time = ULONG_MAX);
65 void sleep(unsigned long secs);
66 void msleep(unsigned long msecs);
67 void usleep(unsigned long usecs);
70 void closeEvent(QCloseEvent *ev);
71 void customEvent(QEvent *ev);
72 void keyPressEvent(QKeyEvent *ev);
73 void paintEvent(QPaintEvent *ev);
74 void showEvent(QShowEvent *ev);
75 void timerEvent(QTimerEvent *ev);
78 static const int paintInterval = 33;
83 QWaitCondition syncCondition;
93 DrawingThread *thread;
95 void initialize(ThreadFunction f);
97 void setColor(const QColor& color);
98 void setBgColor(const QColor& color);
102 void safeLock(QMutex &mutex);
103 void safeUnlock(QMutex &mutex);
106 void dirty(int x, int y);
107 void dirty(int x1, int y1, int x2, int y2);
108 void dirty(const QRect &rect);
113 #endif // !DRAWING_WINDOW_H