Geometrize  1.0
An application for geometrizing images into geometric primitives
imagetaskworker.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <atomic>
4 #include <memory>
5 
6 #include <QObject>
7 
8 #include "geometrize/core.h"
9 #include "geometrize/bitmap/bitmap.h"
10 #include "geometrize/runner/imagerunner.h"
11 #include "geometrize/runner/imagerunneroptions.h"
12 #include "geometrize/shaperesult.h"
13 
14 namespace geometrize
15 {
16 
17 namespace task
18 {
19 
24 class ImageTaskWorker : public QObject
25 {
26  Q_OBJECT
27 public:
28  explicit ImageTaskWorker(Bitmap& bitmap);
29  ImageTaskWorker(Bitmap& bitmap, const Bitmap& initial);
31  ImageTaskWorker(const ImageTaskWorker&) = delete;
32  virtual ~ImageTaskWorker();
33 
41  void step(geometrize::ImageRunnerOptions options,
42  std::function<std::shared_ptr<geometrize::Shape>()> shapeCreator,
43  geometrize::core::EnergyFunction energyFunction = nullptr,
44  geometrize::ShapeAcceptancePreconditionFunction addShapePreconditionFunction = nullptr);
45 
50  bool isStepping() const;
51 
57  void drawShape(std::shared_ptr<geometrize::Shape> shape, geometrize::rgba color);
58 
63  geometrize::Bitmap& getCurrent();
64 
69  geometrize::Bitmap& getTarget();
70 
75  const geometrize::Bitmap& getCurrent() const;
76 
81  const geometrize::Bitmap& getTarget() const;
82 
83  ImageRunner& getRunner();
84 
85 signals:
87  void signal_didStep(std::vector<geometrize::ShapeResult> shapes);
88 
89 private:
90  ImageRunner m_runner;
91  std::atomic<bool> m_working;
92 };
93 
94 }
95 
96 }
geometrize::task::ImageTaskWorker::signal_willStep
void signal_willStep()
geometrize::task::ImageTaskWorker::drawShape
void drawShape(std::shared_ptr< geometrize::Shape > shape, geometrize::rgba color)
drawShape Draws a shape with the given color to the image task. Emits the willStep signal when called...
Definition: imagetaskworker.cpp:40
geometrize::task::ImageTaskWorker::getRunner
ImageRunner & getRunner()
Definition: imagetaskworker.cpp:69
geometrize::task::ImageTaskWorker::m_runner
ImageRunner m_runner
Definition: imagetaskworker.h:90
geometrize::task::ImageTaskWorker::operator=
ImageTaskWorker & operator=(const ImageTaskWorker &)=delete
geometrize::task::ImageTaskWorker::m_working
std::atomic< bool > m_working
Definition: imagetaskworker.h:91
geometrize::task::ImageTaskWorker::ImageTaskWorker
ImageTaskWorker(const ImageTaskWorker &)=delete
geometrize::task::ImageTaskWorker::getCurrent
geometrize::Bitmap & getCurrent()
getCurrent Gets the current working bitmap.
Definition: imagetaskworker.cpp:49
geometrize::task::ImageTaskWorker::~ImageTaskWorker
virtual ~ImageTaskWorker()
Definition: imagetaskworker.cpp:24
geometrize::task::ImageTaskWorker::getTarget
geometrize::Bitmap & getTarget()
getTarget Gets the current target bitmap.
Definition: imagetaskworker.cpp:54
geometrize
Definition: commandlineparser.cpp:73
geometrize::task::ImageTaskWorker
The ImageTaskWorker class transforms a source image into a collection of shapes. It is made to be run...
Definition: imagetaskworker.h:25
geometrize::task::ImageTaskWorker::isStepping
bool isStepping() const
isStepping Returns true if the internal model is currently stepping.
Definition: imagetaskworker.cpp:74
geometrize::task::ImageTaskWorker::step
void step(geometrize::ImageRunnerOptions options, std::function< std::shared_ptr< geometrize::Shape >()> shapeCreator, geometrize::core::EnergyFunction energyFunction=nullptr, geometrize::ShapeAcceptancePreconditionFunction addShapePreconditionFunction=nullptr)
step Steps the image task worker. Emits the willStep signal when called, and didStep signal on comple...
Definition: imagetaskworker.cpp:28
geometrize::task::ImageTaskWorker::ImageTaskWorker
ImageTaskWorker(Bitmap &bitmap)
Definition: imagetaskworker.cpp:16
geometrize::task::ImageTaskWorker::signal_didStep
void signal_didStep(std::vector< geometrize::ShapeResult > shapes)
imagetaskworker.h