Defining a Job class with QRunnable
Let's dive into the project's core. To speed up the Mandelbrot picture generation, we will split the whole computation into multiple jobs. A Job
is a request of a task. Depending on your CPU architecture, several jobs will be executed simultaneously. A Job
class produces a JobResult
function containing result values. In our project, a Job
class generates values for one line of the complete picture. For example, an image resolution of 800 x 600 requires 600 jobs, each one generating 800 values.
Please create a C++ header file called JobResult.h
:
#include <QSize> #include <QVector> #include <QPointF> struct JobResult { JobResult(int valueCount = 1) : areaSize(0, 0), pixelPositionY(0), moveOffset(0, 0), scaleFactor(0.0), values(valueCount) { } QSize areaSize; int pixelPositionY; QPointF moveOffset; double scaleFactor; QVector<int> values; ...