summaryrefslogtreecommitdiff
path: root/src/iscanner.h
blob: e09197ea4a4c4ea57b7ce7dd52cd40d98a4b2696 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#pragma once

// cpp
#include <memory>
#include <vector>

// 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<ICamera> camera,
                      std::vector<std::shared_ptr<IProtocol>> 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<ICamera> camera() const;

protected:
    std::shared_ptr<ICamera> m_camera;
    std::vector<std::shared_ptr<IProtocol>> m_protocols;
};