--- /dev/null
+#include <DrawingArea.h>
+
+DrawingArea::DrawingArea(int width, int height)
+{
+ image = new QImage(width, height, QImage::Format_RGB32);
+ image->fill(QColor(Qt::white).rgb());
+ painter = new QPainter(image);
+}
+
+DrawingArea::~DrawingArea()
+{
+ delete painter;
+ delete image;
+}
+
+int DrawingArea::width() const
+{
+ return image->width();
+}
+
+int DrawingArea::height() const
+{
+ return image->height();
+}
+
+void DrawingArea::setColor(const QColor &color)
+{
+ QPen pen(painter->pen());
+ pen.setColor(color);
+ painter->setPen(pen);
+}
+
+void DrawingArea::setColor(float red, float green, float blue)
+{
+ QColor color;
+ color.setRgbF(red, green, blue);
+ this->setColor(color);
+}
+
+void DrawingArea::drawPoint(int x, int y)
+{
+ painter->drawPoint(x, y);
+}
+
+void DrawingArea::drawLine(int x1, int y1, int x2, int y2)
+{
+ painter->drawLine(x1, y1, x2, y2);
+}
+
--- /dev/null
+#ifndef DRAWING_AREA_H
+#define DRAWING_AREA_H
+
+#include <DrawingAreaInterface.h>
+
+#include <QColor>
+#include <QImage>
+#include <QPainter>
+
+class DrawingArea: public DrawingAreaInterface {
+private:
+ QImage *image;
+ QPainter *painter;
+
+public:
+ DrawingArea(int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
+ ~DrawingArea();
+
+ int width() const;
+ int height() const;
+
+ void setColor(const QColor &color);
+ void setColor(float red, float green, float blue);
+
+ void drawPoint(int x, int y);
+ void drawLine(int x1, int y1, int x2, int y2);
+
+};
+
+#endif // !DRAWING_AREA_H
+
+
+
--- /dev/null
+#ifndef DRAWING_AREA_INTERFACE_H
+#define DRAWING_AREA_INTERFACE_H
+
+class DrawingAreaInterface {
+public:
+ static const int DEFAULT_WIDTH = 640;
+ static const int DEFAULT_HEIGHT = 480;
+
+ virtual ~DrawingAreaInterface() { }
+
+ virtual void setColor(float red, float green, float blue) = 0;
+ virtual void drawPoint(int x, int y) = 0;
+ virtual void drawLine(int x1, int y1, int x2, int y2) = 0;
+
+ virtual void wait() = 0;
+ virtual void waitAll() = 0;
+};
+
+#endif // !DRAWING_AREA_INTERFACE_H
--- /dev/null
+#include <DrawingThreadCore.h>
+
+DrawingThreadCore::DrawingThreadCore(int argc_, char **argv_)
+ : QThread()
+ , argc(argc_)
+ , argv(argv_)
+{
+}
+
+void DrawingThreadCore::run()
+{
+ exit(this->runForReal(argc, argv));
+}
+
+int DrawingThreadCore::runForReal()
+{
+ throw MissingImplementationException();
+}
+
+int DrawingThreadCore::runForReal(int /* argc */, char ** /* argv_ */)
+{
+ return this->runForReal();
+}
+
--- /dev/null
+#ifndef DRAWING_THREAD_CORE_H
+#define DRAWING_THREAD_CORE_H
+
+#include <QThread>
+
+class DrawingThreadCore: public QThread {
+private:
+ int argc;
+ char **argv;
+
+public:
+ class MissingImplementationException { };
+
+protected:
+ virtual int runForReal();
+ virtual int runForReal(int argc, char **argv);
+
+public:
+ DrawingThreadCore(int argc, char **argv);
+
+ void run();
+
+};
+
+#endif // !DRAWING_THREAD_CORE_H
--- /dev/null
+#include <MainDrawingThread.h>
+
+#include <QApplication>
+
+MainDrawingThread::MainDrawingThread(int argc, char **argv)
+ : DrawingThreadCore(argc, argv)
+{
+}
+
+int main(int argc, char *argv[])
+{
+ QApplication application(argc, argv);
+ MainDrawingThread mainDrawingThread(argc, argv);
+
+ mainDrawingThread.start();
+
+ return application.exec();
+}
--- /dev/null
+#ifndef MAIN_DRAWING_THREAD_H
+#define MAIN_DRAWING_THREAD_H
+
+#include <DrawingThreadCore.h>
+
+class MainDrawingThread: public DrawingThreadCore {
+public:
+ MainDrawingThread(int argc, char **argv);
+
+ int runForReal();
+ int runForReal(int argc, char **argv);
+};
+
+#define main_thread MainDrawingThread::runForReal
+
+#endif // !MAIN_DRAWING_THREAD_H
*/
-#include <QApplication>
-#include <QImage>
-#include <QLabel>
-#include <QPaintEvent>
-#include <QPainter>
-#include <QPixmap>
-#include <QThread>
-#include <Qt>
-
-#include <cmath>
-#include <iostream>
-#include <string>
+#include <DrawingArea.h>
+#include <MainDrawingThread.h>
-//============================================================
-// DrawingAreaInterface
-
-class DrawingAreaInterface {
-public:
- static const int DEFAULT_WIDTH = 640;
- static const int DEFAULT_HEIGHT = 480;
+int main_thread(int, char **)
+{
+ // >>> insert main drawing code here <<<
+ return 0;
+}
- virtual ~DrawingAreaInterface() { }
+//============================================================
- virtual void setColor(float red, float green, float blue) = 0;
- virtual void drawPoint(int x, int y) = 0;
- virtual void drawLine(int x1, int y1, int x2, int y2) = 0;
-
- virtual void wait() = 0;
- virtual void waitAll() = 0;
-};
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+#if 0
//============================================================
// WindowCore
//============================================================
-class DrawingArea: public DrawingAreaInterface {
-private:
- QImage *image;
- QPainter *painter;
-
-public:
- DrawingArea(int width = DEFAULT_WIDTH, int height = DEFAULT_HEIGHT);
- ~DrawingArea();
-
- int width() const
- {
- return image->width();
- }
-
- int height() const
- {
- return image->height();
- }
-
- void setColor(const QColor &color)
- {
- QPen pen(painter->pen());
- pen.setColor(color);
- painter->setPen(pen);
- }
-
- void setColor(float red, float green, float blue)
- {
- QColor color;
- color.setRgbF(red, green, blue);
- this->setColor(color);
- }
-
- void drawPoint(int x, int y)
- {
- painter->drawPoint(x, y);
- }
-
- void drawLine(int x1, int y1, int x2, int y2)
- {
- painter->drawLine(x1, y1, x2, y2);
- }
-
-};
-
-DrawingArea::DrawingArea(int width, int height)
-{
- image = new QImage(width, height, QImage::Format_RGB32);
- image->fill(QColor(Qt::white).rgb());
- painter = new QPainter(image);
-}
-
-DrawingArea::~DrawingArea()
-{
- delete painter;
- delete image;
-}
-
-//============================================================
-class DrawingThreadCore: public QThread {
-public:
- void run();
- virtual void runForReal() = 0;
-};
-
-void DrawingThreadCore::run()
-{
- this->runForReal();
-}
-
-//============================================================
-class MainDrawingThread: public DrawingThreadCore {
-public:
- void runForReal();
-};
-
-void MainDrawingThread::runForReal()
-{
- // >>> insert main drawing code here <<<
-}
-
-//============================================================
-int main(int argc, char *argv[])
-{
- QApplication application(argc, argv);
- MainDrawingThread mainDrawingThread;
-
- mainDrawingThread.start();
-
- return application.exec();
-}
-
-//============================================================
-#if 0
/* paramètres par défaut */
int larg = 600;
TARGET = hello
CONFIG += qt debug
-SOURCES += hello.cc
+SOURCES += hello.cc \
+ DrawingArea.cpp \
+ DrawingThreadCore.cpp \
+ MainDrawingThread.cpp