#pragma once // cpp #include #include // TODO: remove this include #include "calibration.h" class IProtocol; class ICamera; class IScanner { public: // TODO: get rid of constructor or rename class explicit IScanner(std::shared_ptr camera, std::vector> protocols); virtual ~IScanner() = default; public: virtual bool startAllProtocols() = 0; virtual void stopAllProtocols() = 0; // TODO: think about more flexible calibration interface virtual CalibrationTablePtr calibrationTableX() const = 0; virtual CalibrationTablePtr calibrationTableZ() const = 0; // TODO: add nullptr check everywhere where this function is used std::shared_ptr camera() const; protected: std::shared_ptr m_camera; std::vector> m_protocols; };