source: flair-src/trunk/lib/FlairSensorActuator/src/Camera.h @ 137

Last change on this file since 137 was 137, checked in by Sanahuja Guillaume, 5 years ago

singleton manager

File size: 3.2 KB
RevLine 
[3]1// %flair:license{
[15]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[3]4// %flair:license}
5/*!
6 * \file Camera.h
7 * \brief Base class for Camera
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2014/03/06
10 * \version 4.0
11 */
12
13#ifndef CAMERA_H
14#define CAMERA_H
15
16#include <IODevice.h>
17#include <stdint.h>
18#include <cvimage.h>
19
[15]20namespace flair {
[121]21        namespace gui {
22                class GroupBox;
23                class Tab;
24                class TabWidget;
25                class Picture;
26                class GridLayout;
27        }
[3]28}
29
[15]30namespace flair {
31namespace sensor {
32/*! \class Camera
33*
34* \brief Base class for Camera
35*
36* Use this class to define a custom Camera.
37*
38*/
39class Camera : public core::IODevice {
40public:
41  /*!
42  * \brief Constructor
43  *
44  * Construct a Camera.
[137]45  * It will be child of the FrameworkManager.
46        *
[15]47  * \param name name
48  * \param width width
49  * \param height height
50  * \param format image format
51  */
[137]52  Camera(std::string name, uint16_t width,
[15]53         uint16_t height, core::cvimage::Type::Format format);
[3]54
[15]55  /*!
56  * \brief Constructor
57  *
58  * Construct a Camera. \n
59  * This contructor must only be called for a simulated device.
60  *
61  * \param parent parent
62  * \param name name
63  */
64  Camera(const core::IODevice *parent, std::string name);
[3]65
[15]66  /*!
67  * \brief Destructor
68  *
69  */
70  ~Camera();
[3]71
[15]72  /*!
73  * \brief Use default plot
74  *
75  * \param image image to display
76  */
77  void UseDefaultPlot(const core::cvimage *image);
[3]78
[15]79  /*!
80  * \brief get Layout
81  *
82  * \return a Layout available
83  */
84  gui::GridLayout *GetLayout(void) const;
[3]85
[15]86  /*!
87  * \brief plot tab
88  *
89  * \return plot tab
90  */
91  gui::Tab *GetPlotTab(void) const;
[3]92
[15]93  /*!
[124]94  * \brief Save raw picture to file
95  *
96  * \param filename filename
97  */
98  void SaveRawPictureToFile(std::string filename) const;
99       
100        /*!
[15]101  * \brief Save picture to file
102  *
[128]103  * \param filename filename; if ommitted, current time is used and file is saved in current directory with jpg compression
[15]104  */
[128]105  void SavePictureToFile(std::string filename="") const;
[3]106
[15]107  /*!
108  * \brief Width
109  *
110  * \return width
111  */
112  uint16_t Width(void) const;
[3]113
[15]114  /*!
115  * \brief Height
116  *
117  * \return height
118  */
119  uint16_t Height(void) const;
[3]120
[15]121  /*!
122 * \brief Output matrix
123 *
124 * Output matrix is of the same size as declared in constructor. \n
125 *
126 * \return the output matrix
127 */
128  core::cvimage *Output(void);
[3]129
[15]130  core::DataType const &GetOutputDataType() const;
[121]131       
132        /*!
133        \enum LogFormat
134        \brief log formats
135        */
136        enum class LogFormat {
137                NONE, /*!< by default, no logging */
138                RAW, /*!< raw format */
139                JPG, /*!< jpg format */
140        };
141       
142        /*!
143        * \brief Set log format
144        *
145        * Set the log format. \n
146        * Logging of the camera will be disabled if this method is not called. \n
147        * Calling this method enables logging of camera.
148        *
149        * \param LogFormat log format
150        */
151  void SetLogFormat(LogFormat logFormat);
152void ProcessUpdate(core::io_data* data);
[15]153protected:
154  /*!
155  * \brief get GroupBox
156  *
157  * \return a GroupBox available
158  */
159  gui::GroupBox *GetGroupBox(void) const;
[3]160
[15]161  core::cvimage *output;
[3]162
[15]163private:
164  gui::Tab *main_tab, *sensor_tab, *plot_tab;
165  gui::TabWidget *tab;
166  gui::GroupBox *setup_groupbox;
167  gui::GridLayout *setup_layout;
[121]168        LogFormat logFormat;
[15]169};
[3]170} // end namespace sensor
171} // end namespace flair
172#endif // CAMERA_H
Note: See TracBrowser for help on using the repository browser.