DynExp
Highly flexible laboratory automation for dynamically changing experiments.
DummyCamera.h
Go to the documentation of this file.
1 // This file is part of DynExp.
2 
9 #pragma once
10 
11 #include "stdafx.h"
12 #include "DynExpCore.h"
13 #include "MetaInstruments/Camera.h"
14 
15 namespace DynExpInstr
16 {
17  class DummyCamera;
18 
19  namespace DummyCameraTasks
20  {
22  {
24 
26  };
27 
29  {
31 
33  };
34 
36  {
38 
40 
41  virtual QImage ObtainImage(DynExp::InstrumentInstance& Instance) override;
42  };
43  }
44 
45  class DummyCameraData : public CameraData
46  {
49 
50  public:
51  DummyCameraData() = default;
52  virtual ~DummyCameraData() = default;
53 
54  QImage GetDummyImage() { return DummyImage; }
55 
56  private:
57  void ResetImpl(dispatch_tag<CameraData>) override final;
59 
61 
62  QImage DummyImage;
63  };
64 
66  {
67  public:
69  virtual ~DummyCameraParams() = default;
70 
71  virtual const char* GetParamClassTag() const noexcept override { return "DummyCameraParams"; }
72 
73  Param<ParamsConfigDialog::TextType> ImagePath = { *this, "ImagePath", "Image path",
74  "Path to an image file to use as a dummy camera image", true, "", DynExp::TextUsageType::Path };
75 
76  private:
79  };
80 
82  {
83  public:
86 
88  virtual ~DummyCameraConfigurator() = default;
89 
90  private:
91  virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore& Core) const override { return DynExp::MakeParams<DummyCameraConfigurator>(ID, Core); }
92  };
93 
94  class DummyCamera : public Camera
95  {
96  public:
100 
101  constexpr static auto Name() noexcept { return "Dummy Camera"; }
102 
103  DummyCamera(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType&& Params);
104  virtual ~DummyCamera() {}
105 
106  virtual std::string GetName() const override { return Name(); }
107 
108  virtual double GetPixelSizeInMicrons() const noexcept override { return 0; }
109 
110  virtual void CaptureSingle(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const noexcept override { MakeAndEnqueueTask<DynExp::DefaultTask>(CallbackFunc); }
111  virtual void StartCapturing(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const noexcept override { MakeAndEnqueueTask<DynExp::DefaultTask>(CallbackFunc); }
112  virtual void StopCapturing(DynExp::TaskBase::CallbackType CallbackFunc = nullptr) const noexcept override { MakeAndEnqueueTask<DynExp::DefaultTask>(CallbackFunc); }
113 
114  private:
115  void ResetImpl(dispatch_tag<Camera>) override final;
117 
118  virtual std::unique_ptr<DynExp::InitTaskBase> MakeInitTask() const override { return DynExp::MakeTask<DummyCameraTasks::InitTask>(); }
119  virtual std::unique_ptr<DynExp::UpdateTaskBase> MakeUpdateTask() const override { return DynExp::MakeTask<DummyCameraTasks::UpdateTask>(); }
120  };
121 }
Defines a meta instrument for an image capturing device.
Defines DynExp's core module as an interface between the UI and DynExp objects.
Configurator class for Camera.
Definition: Camera.h:300
Data class for Camera.
Definition: Camera.h:76
CapturingStateType
Type indicating whether the camera is currently capturing images.
Definition: Camera.h:106
@ CapturingContinuously
The camera is capturing one image after the other.
Parameter class for Camera.
Definition: Camera.h:277
Defines a task for deinitializing an instrument within an instrument inheritance hierarchy....
Definition: Camera.h:39
Defines a task for initializing an instrument within an instrument inheritance hierarchy....
Definition: Camera.h:26
Defines a task for updating an instrument within an instrument inheritance hierarchy....
Definition: Camera.h:52
Meta instrument for an image capturing (camera) device.
Definition: Camera.h:313
virtual ~DummyCameraConfigurator()=default
virtual DynExp::ParamsBasePtrType MakeParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core) const override
Override to make derived classes call DynExp::MakeParams with the correct configurator type derived f...
Definition: DummyCamera.h:91
virtual CapturingStateType GetCapturingStateChild() const noexcept override
Returns the camera's current capturing state.
Definition: DummyCamera.h:60
virtual void ResetImpl(dispatch_tag< DummyCameraData >)
Definition: DummyCamera.h:58
void ResetImpl(dispatch_tag< CameraData >) override final
Definition: DummyCamera.cpp:74
virtual ~DummyCameraData()=default
virtual ~DummyCameraParams()=default
virtual const char * GetParamClassTag() const noexcept override
This function is intended to be overridden once in each derived class returning the name of the respe...
Definition: DummyCamera.h:71
void ConfigureParamsImpl(dispatch_tag< CameraParams >) override final
Called by DynExp::ParamsBase::ConfigureParams() as a starting point for the tag dispatch mechanism to...
Definition: DummyCamera.h:77
Param< ParamsConfigDialog::TextType > ImagePath
Definition: DummyCamera.h:73
virtual void ConfigureParamsImpl(dispatch_tag< DummyCameraParams >)
Definition: DummyCamera.h:78
DummyCameraParams(DynExp::ItemIDType ID, const DynExp::DynExpCore &Core)
Definition: DummyCamera.h:68
virtual void ExitFuncImpl(dispatch_tag< ExitTask >, DynExp::InstrumentInstance &Instance)
Definition: DummyCamera.h:32
void ExitFuncImpl(dispatch_tag< CameraTasks::ExitTask >, DynExp::InstrumentInstance &Instance) override final
Deinitializes the respective instrument within the instrument inheritance hierarchy....
Definition: DummyCamera.h:30
virtual void InitFuncImpl(dispatch_tag< InitTask >, DynExp::InstrumentInstance &Instance)
Definition: DummyCamera.h:25
void InitFuncImpl(dispatch_tag< CameraTasks::InitTask >, DynExp::InstrumentInstance &Instance) override final
Initializes the respective instrument within the instrument inheritance hierarchy....
Definition: DummyCamera.cpp:8
virtual void UpdateFuncImpl(dispatch_tag< UpdateTask >, DynExp::InstrumentInstance &Instance)
Definition: DummyCamera.h:39
void UpdateFuncImpl(dispatch_tag< CameraTasks::UpdateTask >, DynExp::InstrumentInstance &Instance) override final
Updates the respective instrument within the instrument inheritance hierarchy. Call UpdateFuncImpl() ...
Definition: DummyCamera.h:37
virtual QImage ObtainImage(DynExp::InstrumentInstance &Instance) override
Retrieves the current image from the underlying hardware device, applies image transformations (e....
Definition: DummyCamera.cpp:22
void ResetImpl(dispatch_tag< Camera >) override final
Refer to DynExp::Object::Reset(). Using tag dispatch mechanism to ensure that ResetImpl() of every de...
Definition: DummyCamera.cpp:86
virtual void StopCapturing(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const noexcept override
Stops image capturing.
Definition: DummyCamera.h:112
virtual void ResetImpl(dispatch_tag< DummyCamera >)
Definition: DummyCamera.h:116
virtual std::string GetName() const override
Returns the name of this Object type.
Definition: DummyCamera.h:106
virtual double GetPixelSizeInMicrons() const noexcept override
Determines the camera's physical pixel size assuming square pixels.
Definition: DummyCamera.h:108
virtual std::unique_ptr< DynExp::InitTaskBase > MakeInitTask() const override
Factory function for an init task (InitTaskBase). Override to define the desired initialization task ...
Definition: DummyCamera.h:118
virtual std::unique_ptr< DynExp::UpdateTaskBase > MakeUpdateTask() const override
Factory function for an update task (UpdateTaskBase). Override to define the desired update task in d...
Definition: DummyCamera.h:119
DummyCamera(const std::thread::id OwnerThreadID, DynExp::ParamsBasePtrType &&Params)
Definition: DummyCamera.cpp:81
virtual void StartCapturing(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const noexcept override
Makes the camera capture images continuously.
Definition: DummyCamera.h:111
constexpr static auto Name() noexcept
Definition: DummyCamera.h:101
virtual void CaptureSingle(DynExp::TaskBase::CallbackType CallbackFunc=nullptr) const noexcept override
Makes the camera capture a single image.
Definition: DummyCamera.h:110
DynExp's core class acts as the interface between the user interface and DynExp's internal data like ...
Definition: DynExpCore.h:127
Refer to DynExp::ParamsBase::dispatch_tag.
Definition: Instrument.h:1151
Refer to DynExp::ParamsBase::dispatch_tag.
Definition: Instrument.h:1120
Base class for instruments. Instruments comprise virtual devices (meta instruments) and physial devic...
Definition: Instrument.h:451
Configurator class for InstrumentBase.
Definition: Instrument.h:435
Data structure to contain data which is synchronized in between different threads....
Definition: Instrument.h:135
Refer to ParamsBase::dispatch_tag.
Definition: Instrument.h:146
Defines data for a thread belonging to a InstrumentBase instance. Refer to RunnableInstance.
Definition: Instrument.h:772
Parameter class for InstrumentBase.
Definition: Instrument.h:401
const std::thread::id OwnerThreadID
Thread id of the thread which has constructed (and owns) this Object instance.
Definition: Object.h:2302
const ParamsBasePtrType Params
Pointer to the parameter class instance belonging to this Object instance.
Definition: Object.h:2303
Refer to ParamsBase::dispatch_tag.
Definition: Object.h:2018
const ItemIDType ID
ID of the Object this parameter class instance belongs to.
Definition: Object.h:1779
const DynExpCore & Core
Reference to DynExp's core.
Definition: Object.h:1780
Tag for function dispatching mechanism within this class used when derived classes are not intended t...
Definition: Object.h:349
std::function< void(const TaskBase &, ExceptionContainer &)> CallbackType
Type of a callback function which is invoked when a task has finished, failed or has been aborted....
Definition: Instrument.h:939
Refer to DynExp::ParamsBase::dispatch_tag.
Definition: Instrument.h:1182
DynExp's instrument namespace contains the implementation of DynExp instruments which extend DynExp's...
Definition: Instrument.h:1254
std::unique_ptr< ParamsBase > ParamsBasePtrType
Alias for a pointer to the parameter system base class ParamsBase.
Definition: Object.h:1807
size_t ItemIDType
ID type of objects/items managed by DynExp.
Accumulates include statements to provide a precompiled header.