Subversion Repositories seema-scanner

Rev

Rev 53 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 53 Rev 159
1
#ifndef CAMERA_H
1
#ifndef CAMERA_H
2
#define CAMERA_H
2
#define CAMERA_H
3
 
3
 
4
#include <iostream>
4
#include <iostream>
5
#include <vector>
5
#include <vector>
6
 
6
 
7
struct CameraFrame {
7
struct CameraFrame {
8
    void *memory;
8
    void *memory;
9
    unsigned int width;
9
    unsigned int width;
10
    unsigned int height;
10
    unsigned int height;
11
    unsigned int bitDepth;
11
    unsigned int bitDepth;
12
    unsigned int channels;
12
    unsigned int channels;
13
    unsigned int sizeBytes;
13
    unsigned int sizeBytes;
14
    unsigned int timeStamp;
14
    unsigned int timeStamp;
15
    CameraFrame(): memory(NULL), width(0), height(0), bitDepth(0), channels(0), sizeBytes(0), timeStamp(0){}
15
    CameraFrame(): memory(NULL), width(0), height(0), bitDepth(0), channels(0), sizeBytes(0), timeStamp(0){}
16
};
16
};
17
 
17
 
18
struct CameraSettings {
18
struct CameraSettings {
19
    float gain;
19
    float gain;
20
    float shutter; // [ms]
20
    float shutter; // [ms]
21
    CameraSettings(): gain(0.0), shutter(0.0) {}
21
    CameraSettings(): gain(0.0), shutter(0.0) {}
22
};
22
};
23
 
23
 
24
struct CameraInfo {
24
struct CameraInfo {
25
    std::string vendor;
25
    std::string vendor;
26
    std::string model;
26
    std::string model;
27
    unsigned int busID;
27
    unsigned int busID;
28
    unsigned int serialNumber;
28
    unsigned int serialNumber;
29
};
29
};
30
 
30
 
31
enum CameraTriggerMode {
31
enum CameraTriggerMode {
32
    triggerModeHardware,
32
    triggerModeHardware,
33
    triggerModeSoftware
33
    triggerModeSoftware
34
};
34
};
35
 
35
 
36
// Camera factory methods and abstract base class for camera implementations
36
// Camera base class for camera implementations
37
class Camera {
37
class Camera {
38
 
38
 
39
    public:
39
    public:
40
        // Static "camera factory" methods
-
 
41
        static std::vector< std::vector<CameraInfo> > GetInterfaceCameraList();
-
 
42
        static Camera* NewCamera(unsigned int interfaceNum, unsigned int camNum, CameraTriggerMode triggerMode);
-
 
43
        // Interface function
40
        // Interface function
44
        Camera(CameraTriggerMode _triggerMode) : capturing(false), triggerMode(_triggerMode){}
41
        Camera(CameraTriggerMode _triggerMode) : capturing(false), triggerMode(_triggerMode){}
45
        virtual void startCapture() = 0;
42
        virtual void startCapture() = 0;
46
        bool isCapturing(){return capturing;}
43
        bool isCapturing(){return capturing;}
47
        virtual void stopCapture() = 0;
44
        virtual void stopCapture() = 0;
48
        virtual void trigger() = 0;
45
        virtual void trigger() = 0;
49
        virtual CameraFrame getFrame() = 0;
46
        virtual CameraFrame getFrame() = 0;
50
        virtual size_t getFrameSizeBytes() = 0;
47
        virtual size_t getFrameSizeBytes() = 0;
51
        virtual size_t getFrameWidth() = 0;
48
        virtual size_t getFrameWidth() = 0;
52
        virtual size_t getFrameHeight() = 0;
49
        virtual size_t getFrameHeight() = 0;
53
        virtual CameraSettings getCameraSettings() = 0;
50
        virtual CameraSettings getCameraSettings() = 0;
54
        virtual void setCameraSettings(CameraSettings) = 0;
51
        virtual void setCameraSettings(CameraSettings) = 0;
55
        virtual ~Camera(){}
52
        virtual ~Camera(){}
56
 
53
 
57
    protected:
54
    protected:
58
        bool capturing;
55
        bool capturing;
59
        CameraTriggerMode triggerMode;
56
        CameraTriggerMode triggerMode;
60
};
57
};
-
 
58
 
-
 
59
// Camera factory methods
-
 
60
class CameraFactory {
-
 
61
    public:
-
 
62
        // Static "camera factory" methods
-
 
63
        static std::vector< std::vector<CameraInfo> > GetInterfaceCameraList();
-
 
64
        static Camera* NewCamera(unsigned int interfaceNum, unsigned int camNum, CameraTriggerMode triggerMode);
-
 
65
};
61
 
66
 
62
#endif
67
#endif
63
 
68