#ifndef IMAGEPROCESSINGWORKER_H #define IMAGEPROCESSINGWORKER_H #include #include #include #include #include #include #include #include "VZNL_Types.h" class ImageProcessingWorker : public QObject { Q_OBJECT public: explicit ImageProcessingWorker(QObject *parent = nullptr); ~ImageProcessingWorker(); void requestImageGeneration(const std::vector>& scanLines); void stop(); bool isProcessing() const; signals: void imageGenerated(const QImage& image); private: void workerThreadFunction(); void processImageGeneration(const std::vector>& scanLines); private: std::thread m_workerThread; std::atomic m_stopped; std::atomic m_processing; std::mutex m_dataMutex; std::condition_variable m_condition; std::vector> m_currentTask; bool m_hasNewTask; }; #endif // IMAGEPROCESSINGWORKER_H