X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/graphlib.git/blobdiff_plain/7e44377ed59d10dcf9f04ff898691b99d5f8a1c8..e76ea9e634775180ffbb3fd9c6479a31aeaa43fd:/DrawingWindow.h diff --git a/DrawingWindow.h b/DrawingWindow.h index 9e86889..66fc445 100644 --- a/DrawingWindow.h +++ b/DrawingWindow.h @@ -1,18 +1,12 @@ #ifndef DRAWING_WINDOW_H #define DRAWING_WINDOW_H -#include -#include -#include -#include -#include -#include #include #include -class DrawingWindow: public QWidget { -/* Q_OBJECT */ +class DrawingWindowPrivate; +class DrawingWindow: public QWidget { public: typedef void (*ThreadFunction)(DrawingWindow &); @@ -30,96 +24,36 @@ public: ~DrawingWindow(); - int width() const; - int height() const; + const int width; + const int height; void setColor(float red, float green, float blue); - void setColor(const QColor &color); + void setBgColor(float red, float green, float blue); + + void clearGraph(); void drawPoint(int x, int y); void drawLine(int x1, int y1, int x2, int y2); + void drawRect(int x1, int y1, int x2, int y2); + + bool sync(unsigned long time = ULONG_MAX); + + void sleep(unsigned long secs); + void msleep(unsigned long msecs); + void usleep(unsigned long usecs); protected: + void closeEvent(QCloseEvent *ev); + void customEvent(QEvent *ev); + void keyPressEvent(QKeyEvent *ev); void paintEvent(QPaintEvent *ev); void showEvent(QShowEvent *ev); void timerEvent(QTimerEvent *ev); private: - class DrawingThread; - - static const int paintInterval = 33; - - QBasicTimer timer; + DrawingWindowPrivate * const d; - QImage *image; - QPainter *painter; - - DrawingThread *thread; - bool thread_started; - - bool dirtyFlag; - QRect dirtyRect; - - bool mutex_enabled; - QMutex mutex; - - void initialize(ThreadFunction fun, int width, int height); - - void lock(); - void unlock(); - - void setDirtyRect(); - void setDirtyRect(int x, int y); - void setDirtyRect(int x1, int y1, int x2, int y2); - void setDirtyRect(const QRect &rect); + friend class DrawingWindowPrivate; }; -inline -int DrawingWindow::width() const -{ - return image->width(); -} - -inline -int DrawingWindow::height() const -{ - return image->height(); -} - -inline -void DrawingWindow::lock() -{ - if (mutex_enabled) - mutex.lock(); - if (!mutex_enabled) - mutex.unlock(); -} - -inline -void DrawingWindow::unlock() -{ - mutex.unlock(); -} - -inline -void DrawingWindow::setDirtyRect() -{ - dirtyFlag = true; - dirtyRect.setRect(0, 0, width(), height()); -} - -inline -void DrawingWindow::setDirtyRect(int x, int y) -{ - setDirtyRect(QRect(x, y, 1, 1)); -} - -inline -void DrawingWindow::setDirtyRect(int x1, int y1, int x2, int y2) -{ - QRect r; - r.setCoords(x1, y1, x2, y2); - setDirtyRect(r.normalized()); -} - #endif // !DRAWING_WINDOW_H