From 7ce708664b7dd924dffb1c79cde3ee67fdfae1c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:33:05 +0000 Subject: [PATCH] Publish MMDevice/latest --- _device_base_8h_source.html | 8 +- _m_m_device_8h_source.html | 1495 ++++++++++---------- _module_interface_8h_source.html | 2 +- class_c_auto_focus_base-members.html | 2 + class_c_auto_focus_base.html | 6 + class_c_camera_base-members.html | 2 + class_c_camera_base.html | 6 + class_c_galvo_base-members.html | 2 + class_c_galvo_base.html | 6 + class_c_generic_base-members.html | 2 + class_c_generic_base.html | 6 + class_c_image_processor_base-members.html | 2 + class_c_image_processor_base.html | 6 + class_c_magnifier_base-members.html | 2 + class_c_magnifier_base.html | 6 + class_c_s_l_m_base-members.html | 2 + class_c_s_l_m_base.html | 6 + class_c_serial_base-members.html | 2 + class_c_serial_base.html | 6 + class_c_shutter_base-members.html | 2 + class_c_shutter_base.html | 6 + class_c_signal_i_o_base-members.html | 2 + class_c_signal_i_o_base.html | 6 + class_c_stage_base-members.html | 2 + class_c_stage_base.html | 6 + class_c_state_device_base-members.html | 2 + class_c_state_device_base.html | 6 + class_c_x_y_stage_base-members.html | 2 + class_c_x_y_stage_base.html | 6 + class_hub_base-members.html | 2 + class_hub_base.html | 6 + class_m_m_1_1_auto_focus-members.html | 60 +- class_m_m_1_1_auto_focus.html | 11 +- class_m_m_1_1_camera-members.html | 82 +- class_m_m_1_1_camera.html | 11 +- class_m_m_1_1_core-members.html | 60 +- class_m_m_1_1_core.html | 102 +- class_m_m_1_1_device-members.html | 52 +- class_m_m_1_1_device.html | 39 +- class_m_m_1_1_galvo-members.html | 72 +- class_m_m_1_1_galvo.html | 11 +- class_m_m_1_1_generic-members.html | 52 +- class_m_m_1_1_generic.html | 11 +- class_m_m_1_1_hub-members.html | 56 +- class_m_m_1_1_hub.html | 11 +- class_m_m_1_1_image_processor-members.html | 56 +- class_m_m_1_1_image_processor.html | 11 +- class_m_m_1_1_magnifier-members.html | 54 +- class_m_m_1_1_magnifier.html | 11 +- class_m_m_1_1_s_l_m-members.html | 68 +- class_m_m_1_1_s_l_m.html | 11 +- class_m_m_1_1_serial-members.html | 62 +- class_m_m_1_1_serial.html | 11 +- class_m_m_1_1_shutter-members.html | 54 +- class_m_m_1_1_shutter.html | 11 +- class_m_m_1_1_signal_i_o-members.html | 60 +- class_m_m_1_1_signal_i_o.html | 11 +- class_m_m_1_1_stage-members.html | 72 +- class_m_m_1_1_stage.html | 11 +- class_m_m_1_1_state-members.html | 62 +- class_m_m_1_1_state.html | 11 +- class_m_m_1_1_x_y_stage-members.html | 74 +- class_m_m_1_1_x_y_stage.html | 11 +- functions_func_g.html | 1 - functions_g.html | 1 - 65 files changed, 1497 insertions(+), 1413 deletions(-) diff --git a/_device_base_8h_source.html b/_device_base_8h_source.html index 1a158bc..00232e6 100644 --- a/_device_base_8h_source.html +++ b/_device_base_8h_source.html @@ -2179,7 +2179,7 @@
MM::ActionFunctor
Definition: Property.h:75
MM::Action
Definition: Property.h:86
MM::Camera::GetBinning
virtual int GetBinning() const =0
-
MM::Core
Definition: MMDevice.h:1229
+
MM::Core
Definition: MMDevice.h:1226
MM::Core::OnMagnifierChanged
virtual int OnMagnifierChanged(const Device *caller)=0
MM::Core::OnStagePositionChanged
virtual int OnStagePositionChanged(const Device *caller, double pos)=0
MM::Core::GetLoadedDeviceOfType
virtual void GetLoadedDeviceOfType(const Device *caller, MM::DeviceType devType, char *pDeviceName, const unsigned int deviceIterator)=0
Get the names of currently loaded devices of a given type.
@@ -2187,9 +2187,9 @@
MM::Core::OnXYStagePositionChanged
virtual int OnXYStagePositionChanged(const Device *caller, double xPos, double yPos)=0
MM::Core::OnPropertyChanged
virtual int OnPropertyChanged(const Device *caller, const char *propName, const char *propValue)=0
MM::Core::OnSLMExposureChanged
virtual int OnSLMExposureChanged(const Device *caller, double newExposure)=0
-
MM::Device
Definition: MMDevice.h:224
-
MM::Hub
Definition: MMDevice.h:1174
-
MM::MMTime
Definition: MMDevice.h:90
+
MM::Device
Definition: MMDevice.h:225
+
MM::Hub
Definition: MMDevice.h:1171
+
MM::MMTime
Definition: MMDevice.h:91
MM::PropertyBase
Definition: Property.h:38
MM::PropertyCollection
Definition: Property.h:435
MM::Property
Definition: Property.h:143
diff --git a/_m_m_device_8h_source.html b/_m_m_device_8h_source.html index a089d7f..a327191 100644 --- a/_m_m_device_8h_source.html +++ b/_m_m_device_8h_source.html @@ -112,755 +112,743 @@
66 # endif
67 #endif
68 
-
69 #ifdef _WIN32
-
70  #define WIN32_LEAN_AND_MEAN
-
71  #include <windows.h>
-
72 
-
73  typedef HMODULE HDEVMODULE;
-
74 #else
-
75  typedef void* HDEVMODULE;
-
76 #endif
-
77 
-
78 class ImgBuffer;
-
79 
-
80 namespace MM {
-
81 
-
82  // forward declaration for the MMCore callback class
-
83  class Core;
-
84 
-
89  class MMTime
-
90  {
-
91  long long microseconds_;
-
92 
-
93  public:
-
94  MMTime() : microseconds_(0LL) {}
-
95 
-
96  explicit MMTime(double uSecTotal) :
-
97  microseconds_(static_cast<long long>(uSecTotal))
-
98  {}
-
99 
-
100  explicit MMTime(long sec, long uSec) :
-
101  microseconds_(sec * 1'000'000LL + uSec)
-
102  {}
-
103 
-
104  static MMTime fromUs(long long us)
-
105  {
-
106  // Work around our lack of a constructor that directly sets the
-
107  // internal representation.
-
108  // (Note that we cannot add a constructor from 'long long' because
-
109  // many existing uses would then get an error (ambiguous with the
-
110  // 'double' overload).)
-
111  MMTime ret;
-
112  ret.microseconds_ = us;
-
113  return ret;
-
114  }
-
115 
-
116  static MMTime fromMs(double ms)
-
117  {
-
118  return MMTime(ms * 1000.0);
-
119  }
-
120 
-
121  static MMTime fromSeconds(long secs)
-
122  {
-
123  return MMTime(secs, 0);
-
124  }
-
125 
-
126  MMTime operator+(const MMTime &other) const
-
127  {
-
128  return fromUs(microseconds_ + other.microseconds_);
-
129  }
-
130 
-
131  MMTime operator-(const MMTime &other) const
-
132  {
-
133  return fromUs(microseconds_ - other.microseconds_);
-
134  }
-
135 
-
136  bool operator>(const MMTime &other) const
-
137  {
-
138  return microseconds_ > other.microseconds_;
-
139  }
-
140 
-
141  bool operator>=(const MMTime &other) const
-
142  {
-
143  return microseconds_ >= other.microseconds_;
-
144  }
-
145 
-
146  bool operator<(const MMTime &other) const
-
147  {
-
148  return microseconds_ < other.microseconds_;
-
149  }
-
150 
-
151  bool operator<=(const MMTime &other) const
-
152  {
-
153  return microseconds_ <= other.microseconds_;
-
154  }
-
155 
-
156  bool operator==(const MMTime &other) const
-
157  {
-
158  return microseconds_ == other.microseconds_;
-
159  }
-
160 
-
161  bool operator!=(const MMTime &other) const
-
162  {
-
163  return !(*this == other);
-
164  }
-
165 
-
166  double getMsec() const
-
167  {
-
168  return microseconds_ / 1000.0;
-
169  }
-
170 
-
171  double getUsec() const
-
172  {
-
173  return static_cast<double>(microseconds_);
-
174  }
-
175 
-
176  std::string toString() const {
-
177  long long absUs = std::abs(microseconds_);
-
178  long long seconds = absUs / 1'000'000LL;
-
179  long long fracUs = absUs - seconds * 1'000'000LL;
-
180  const char *sign = microseconds_ < 0 ? "-" : "";
-
181 
-
182  using namespace std;
-
183  ostringstream s;
-
184  s << sign << seconds << '.' <<
-
185  setfill('0') << right << setw(6) << fracUs;
-
186  return s.str();
-
187  }
-
188  };
-
189 
+
69 // To be removed once the deprecated Get/SetModuleHandle() is removed:
+
70 #ifdef _WIN32
+
71  #define WIN32_LEAN_AND_MEAN
+
72  #include <windows.h>
+
73 
+
74  typedef HMODULE HDEVMODULE;
+
75 #else
+
76  typedef void* HDEVMODULE;
+
77 #endif
+
78 
+
79 class ImgBuffer;
+
80 
+
81 namespace MM {
+
82 
+
83  // forward declaration for the MMCore callback class
+
84  class Core;
+
85 
+
90  class MMTime
+
91  {
+
92  long long microseconds_;
+
93 
+
94  public:
+
95  MMTime() : microseconds_(0LL) {}
+
96 
+
97  explicit MMTime(double uSecTotal) :
+
98  microseconds_(static_cast<long long>(uSecTotal))
+
99  {}
+
100 
+
101  explicit MMTime(long sec, long uSec) :
+
102  microseconds_(sec * 1'000'000LL + uSec)
+
103  {}
+
104 
+
105  static MMTime fromUs(long long us)
+
106  {
+
107  // Work around our lack of a constructor that directly sets the
+
108  // internal representation.
+
109  // (Note that we cannot add a constructor from 'long long' because
+
110  // many existing uses would then get an error (ambiguous with the
+
111  // 'double' overload).)
+
112  MMTime ret;
+
113  ret.microseconds_ = us;
+
114  return ret;
+
115  }
+
116 
+
117  static MMTime fromMs(double ms)
+
118  {
+
119  return MMTime(ms * 1000.0);
+
120  }
+
121 
+
122  static MMTime fromSeconds(long secs)
+
123  {
+
124  return MMTime(secs, 0);
+
125  }
+
126 
+
127  MMTime operator+(const MMTime &other) const
+
128  {
+
129  return fromUs(microseconds_ + other.microseconds_);
+
130  }
+
131 
+
132  MMTime operator-(const MMTime &other) const
+
133  {
+
134  return fromUs(microseconds_ - other.microseconds_);
+
135  }
+
136 
+
137  bool operator>(const MMTime &other) const
+
138  {
+
139  return microseconds_ > other.microseconds_;
+
140  }
+
141 
+
142  bool operator>=(const MMTime &other) const
+
143  {
+
144  return microseconds_ >= other.microseconds_;
+
145  }
+
146 
+
147  bool operator<(const MMTime &other) const
+
148  {
+
149  return microseconds_ < other.microseconds_;
+
150  }
+
151 
+
152  bool operator<=(const MMTime &other) const
+
153  {
+
154  return microseconds_ <= other.microseconds_;
+
155  }
+
156 
+
157  bool operator==(const MMTime &other) const
+
158  {
+
159  return microseconds_ == other.microseconds_;
+
160  }
+
161 
+
162  bool operator!=(const MMTime &other) const
+
163  {
+
164  return !(*this == other);
+
165  }
+
166 
+
167  double getMsec() const
+
168  {
+
169  return microseconds_ / 1000.0;
+
170  }
+
171 
+
172  double getUsec() const
+
173  {
+
174  return static_cast<double>(microseconds_);
+
175  }
+
176 
+
177  std::string toString() const {
+
178  long long absUs = std::abs(microseconds_);
+
179  long long seconds = absUs / 1'000'000LL;
+
180  long long fracUs = absUs - seconds * 1'000'000LL;
+
181  const char *sign = microseconds_ < 0 ? "-" : "";
+
182 
+
183  using namespace std;
+
184  ostringstream s;
+
185  s << sign << seconds << '.' <<
+
186  setfill('0') << right << setw(6) << fracUs;
+
187  return s.str();
+
188  }
+
189  };
190 
-
194  class TimeoutMs
-
195  {
-
196  public:
-
197  // arguments: MMTime start time, millisecond interval time
-
198  explicit TimeoutMs(const MMTime startTime, const unsigned long intervalMs) :
-
199  startTime_(startTime),
-
200  interval_(0, 1000*intervalMs)
-
201  {
-
202  }
-
203  explicit TimeoutMs(const MMTime startTime, const MMTime interval) :
-
204  startTime_(startTime),
-
205  interval_(interval)
-
206  {
-
207  }
-
208 
-
209  bool expired(const MMTime tnow)
-
210  {
-
211  MMTime elapsed = tnow - startTime_;
-
212  return ( interval_ < elapsed );
-
213  }
-
214 
-
215  private:
-
216  MMTime startTime_; // start time
-
217  MMTime interval_; // interval in milliseconds
-
218  };
-
219 
+
191 
+
195  class TimeoutMs
+
196  {
+
197  public:
+
198  // arguments: MMTime start time, millisecond interval time
+
199  explicit TimeoutMs(const MMTime startTime, const unsigned long intervalMs) :
+
200  startTime_(startTime),
+
201  interval_(0, 1000*intervalMs)
+
202  {
+
203  }
+
204  explicit TimeoutMs(const MMTime startTime, const MMTime interval) :
+
205  startTime_(startTime),
+
206  interval_(interval)
+
207  {
+
208  }
+
209 
+
210  bool expired(const MMTime tnow)
+
211  {
+
212  MMTime elapsed = tnow - startTime_;
+
213  return ( interval_ < elapsed );
+
214  }
+
215 
+
216  private:
+
217  MMTime startTime_; // start time
+
218  MMTime interval_; // interval in milliseconds
+
219  };
220 
-
224  class Device {
-
225  public:
-
226  Device() {}
-
227  virtual ~Device() {}
-
228 
-
229  virtual unsigned GetNumberOfProperties() const = 0;
-
230  virtual int GetProperty(const char* name, char* value) const = 0;
-
231  virtual int SetProperty(const char* name, const char* value) = 0;
-
232  virtual bool HasProperty(const char* name) const = 0;
-
233  virtual bool GetPropertyName(unsigned idx, char* name) const = 0;
-
234  virtual int GetPropertyReadOnly(const char* name, bool& readOnly) const = 0;
-
235  virtual int GetPropertyInitStatus(const char* name, bool& preInit) const = 0;
-
236  virtual int HasPropertyLimits(const char* name, bool& hasLimits) const = 0;
-
237  virtual int GetPropertyLowerLimit(const char* name, double& lowLimit) const = 0;
-
238  virtual int GetPropertyUpperLimit(const char* name, double& hiLimit) const = 0;
-
239  virtual int GetPropertyType(const char* name, MM::PropertyType& pt) const = 0;
-
240  virtual unsigned GetNumberOfPropertyValues(const char* propertyName) const = 0;
-
241  virtual bool GetPropertyValueAt(const char* propertyName, unsigned index, char* value) const = 0;
-
250  virtual int IsPropertySequenceable(const char* name, bool& isSequenceable) const = 0;
-
254  virtual int GetPropertySequenceMaxLength(const char* propertyName, long& nrEvents) const = 0;
-
258  virtual int StartPropertySequence(const char* propertyName) = 0;
-
262  virtual int StopPropertySequence(const char* propertyName) = 0;
-
266  virtual int ClearPropertySequence(const char* propertyName) = 0;
-
270  virtual int AddToPropertySequence(const char* propertyName, const char* value) = 0;
-
274  virtual int SendPropertySequence(const char* propertyName) = 0;
-
275 
-
276  virtual bool GetErrorText(int errorCode, char* errMessage) const = 0;
-
277  virtual bool Busy() = 0;
-
278  virtual double GetDelayMs() const = 0;
-
279  virtual void SetDelayMs(double delay) = 0;
-
280  virtual bool UsesDelay() = 0;
-
281 
-
285  // TODO Get/SetModuleHandle() is no longer used; can remove at a
-
286  // convenient time.
-
287  virtual HDEVMODULE GetModuleHandle() const = 0;
-
288  virtual void SetModuleHandle(HDEVMODULE hLibraryHandle) = 0;
-
289  virtual void SetLabel(const char* label) = 0;
-
290  virtual void GetLabel(char* name) const = 0;
-
291  virtual void SetModuleName(const char* moduleName) = 0;
-
292  virtual void GetModuleName(char* moduleName) const = 0;
-
293  virtual void SetDescription(const char* description) = 0;
-
294  virtual void GetDescription(char* description) const = 0;
-
295 
-
296  virtual int Initialize() = 0;
-
305  virtual int Shutdown() = 0;
-
306 
-
307  virtual DeviceType GetType() const = 0;
-
308  virtual void GetName(char* name) const = 0;
-
309  virtual void SetCallback(Core* callback) = 0;
-
310 
-
311  //device discovery API
-
312  virtual bool SupportsDeviceDetection(void) = 0;
-
313  virtual MM::DeviceDetectionStatus DetectDevice(void) = 0;
-
314 
-
315  // hub-peripheral relationship
-
316  virtual void SetParentID(const char* parentId) = 0;
-
317  virtual void GetParentID(char* parentID) const = 0;
-
318  // virtual void SetID(const char* id) = 0;
-
319  // virtual void GetID(char* id) const = 0;
-
320  };
-
321 
-
325  class Generic : public Device
-
326  {
-
327  public:
-
328  virtual DeviceType GetType() const { return Type; }
-
329  static const DeviceType Type;
-
330  };
-
331 
-
335  class Camera : public Device {
-
336  public:
-
337  Camera() {}
-
338  virtual ~Camera() {}
+
221 
+
225  class Device {
+
226  public:
+
227  Device() {}
+
228  virtual ~Device() {}
+
229 
+
230  virtual unsigned GetNumberOfProperties() const = 0;
+
231  virtual int GetProperty(const char* name, char* value) const = 0;
+
232  virtual int SetProperty(const char* name, const char* value) = 0;
+
233  virtual bool HasProperty(const char* name) const = 0;
+
234  virtual bool GetPropertyName(unsigned idx, char* name) const = 0;
+
235  virtual int GetPropertyReadOnly(const char* name, bool& readOnly) const = 0;
+
236  virtual int GetPropertyInitStatus(const char* name, bool& preInit) const = 0;
+
237  virtual int HasPropertyLimits(const char* name, bool& hasLimits) const = 0;
+
238  virtual int GetPropertyLowerLimit(const char* name, double& lowLimit) const = 0;
+
239  virtual int GetPropertyUpperLimit(const char* name, double& hiLimit) const = 0;
+
240  virtual int GetPropertyType(const char* name, MM::PropertyType& pt) const = 0;
+
241  virtual unsigned GetNumberOfPropertyValues(const char* propertyName) const = 0;
+
242  virtual bool GetPropertyValueAt(const char* propertyName, unsigned index, char* value) const = 0;
+
251  virtual int IsPropertySequenceable(const char* name, bool& isSequenceable) const = 0;
+
255  virtual int GetPropertySequenceMaxLength(const char* propertyName, long& nrEvents) const = 0;
+
259  virtual int StartPropertySequence(const char* propertyName) = 0;
+
263  virtual int StopPropertySequence(const char* propertyName) = 0;
+
267  virtual int ClearPropertySequence(const char* propertyName) = 0;
+
271  virtual int AddToPropertySequence(const char* propertyName, const char* value) = 0;
+
275  virtual int SendPropertySequence(const char* propertyName) = 0;
+
276 
+
277  virtual bool GetErrorText(int errorCode, char* errMessage) const = 0;
+
278  virtual bool Busy() = 0;
+
279  virtual double GetDelayMs() const = 0;
+
280  virtual void SetDelayMs(double delay) = 0;
+
281  virtual bool UsesDelay() = 0;
+
282 
+
283  MM_DEPRECATED(virtual HDEVMODULE GetModuleHandle() const) = 0;
+
284  MM_DEPRECATED(virtual void SetModuleHandle(HDEVMODULE hLibraryHandle)) = 0;
+
285 
+
286  virtual void SetLabel(const char* label) = 0;
+
287  virtual void GetLabel(char* name) const = 0;
+
288  virtual void SetModuleName(const char* moduleName) = 0;
+
289  virtual void GetModuleName(char* moduleName) const = 0;
+
290  virtual void SetDescription(const char* description) = 0;
+
291  virtual void GetDescription(char* description) const = 0;
+
292 
+
293  virtual int Initialize() = 0;
+
302  virtual int Shutdown() = 0;
+
303 
+
304  virtual DeviceType GetType() const = 0;
+
305  virtual void GetName(char* name) const = 0;
+
306  virtual void SetCallback(Core* callback) = 0;
+
307 
+
308  //device discovery API
+
309  virtual bool SupportsDeviceDetection(void) = 0;
+
310  virtual MM::DeviceDetectionStatus DetectDevice(void) = 0;
+
311 
+
312  // hub-peripheral relationship
+
313  virtual void SetParentID(const char* parentId) = 0;
+
314  virtual void GetParentID(char* parentID) const = 0;
+
315  // virtual void SetID(const char* id) = 0;
+
316  // virtual void GetID(char* id) const = 0;
+
317  };
+
318 
+
322  class Generic : public Device
+
323  {
+
324  public:
+
325  virtual DeviceType GetType() const { return Type; }
+
326  static const DeviceType Type;
+
327  };
+
328 
+
332  class Camera : public Device {
+
333  public:
+
334  Camera() {}
+
335  virtual ~Camera() {}
+
336 
+
337  virtual DeviceType GetType() const { return Type; }
+
338  static const DeviceType Type;
339 
-
340  virtual DeviceType GetType() const { return Type; }
-
341  static const DeviceType Type;
-
342 
-
343  // Camera API
-
352  virtual int SnapImage() = 0;
-
377  virtual const unsigned char* GetImageBuffer() = 0;
-
389  virtual const unsigned char* GetImageBuffer(unsigned channelNr) = 0;
-
393  virtual const unsigned int* GetImageBufferAsRGB32() = 0;
-
398  virtual unsigned GetNumberOfComponents() const = 0;
-
402  virtual int GetComponentName(unsigned component, char* name) = 0;
-
408  virtual int unsigned GetNumberOfChannels() const = 0;
-
413  virtual int GetChannelName(unsigned channel, char* name) = 0;
-
419  virtual long GetImageBufferSize() const = 0;
-
424  virtual unsigned GetImageWidth() const = 0;
-
429  virtual unsigned GetImageHeight() const = 0;
-
434  virtual unsigned GetImageBytesPerPixel() const = 0;
-
441  virtual unsigned GetBitDepth() const = 0;
-
446  virtual double GetPixelSizeUm() const = 0;
-
450  virtual int GetBinning() const = 0;
-
454  virtual int SetBinning(int binSize) = 0;
-
458  virtual void SetExposure(double exp_ms) = 0;
-
462  virtual double GetExposure() const = 0;
-
476  virtual int SetROI(unsigned x, unsigned y, unsigned xSize, unsigned ySize) = 0;
-
480  virtual int GetROI(unsigned& x, unsigned& y, unsigned& xSize, unsigned& ySize) = 0;
-
484  virtual int ClearROI() = 0;
-
485  virtual bool SupportsMultiROI() = 0;
-
486  virtual bool IsMultiROISet() = 0;
-
487  virtual int GetMultiROICount(unsigned& count) = 0;
-
488  virtual int SetMultiROI(const unsigned* xs, const unsigned* ys,
-
489  const unsigned* widths, const unsigned* heights,
-
490  unsigned numROIs) = 0;
-
491  virtual int GetMultiROI(unsigned* xs, unsigned* ys, unsigned* widths,
-
492  unsigned* heights, unsigned* length) = 0;
-
496  virtual int StartSequenceAcquisition(long numImages, double interval_ms, bool stopOnOverflow) = 0;
-
501  virtual int StartSequenceAcquisition(double interval_ms) = 0;
-
505  virtual int StopSequenceAcquisition() = 0;
-
509  virtual int PrepareSequenceAcqusition() = 0;
-
514  virtual bool IsCapturing() = 0;
-
515 
-
522  virtual void GetTags(char* serializedMetadata) = 0;
-
523 
-
531  virtual void AddTag(const char* key, const char* deviceLabel, const char* value) = 0;
-
532 
-
538  virtual void RemoveTag(const char* key) = 0;
-
539 
-
545  virtual int IsExposureSequenceable(bool& isSequenceable) const = 0;
-
546 
-
547  // Sequence functions
-
548  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
-
549  // computer commands.
-
550  // Sequences of exposures can be uploaded to the camera. The camera will cycle through
-
551  // the uploaded list of exposures (triggered by either an internal or
-
552  // external trigger). If the device is capable (and ready) to do so isSequenceable will
-
553  // be true. If your device can not execute this (true for most cameras)
-
554  // simply set IsExposureSequenceable to false
-
555  virtual int GetExposureSequenceMaxLength(long& nrEvents) const = 0;
-
556  virtual int StartExposureSequence() = 0;
-
557  virtual int StopExposureSequence() = 0;
-
558  // Remove all values in the sequence
-
559  virtual int ClearExposureSequence() = 0;
-
560  // Add one value to the sequence
-
561  virtual int AddToExposureSequence(double exposureTime_ms) = 0;
-
562  // Signal that we are done sending sequence values so that the adapter can send the whole sequence to the device
-
563  virtual int SendExposureSequence() const = 0;
-
564  };
-
565 
-
569  class Shutter : public Device
-
570  {
-
571  public:
-
572  Shutter() {}
-
573  virtual ~Shutter() {}
-
574 
-
575  // Device API
-
576  virtual DeviceType GetType() const { return Type; }
-
577  static const DeviceType Type;
-
578 
-
579  // Shutter API
-
580  virtual int SetOpen(bool open = true) = 0;
-
581  virtual int GetOpen(bool& open) = 0;
-
586  virtual int Fire(double deltaT) = 0;
-
587  };
-
588 
-
592  class Stage : public Device
-
593  {
-
594  public:
-
595  Stage() {}
-
596  virtual ~Stage() {}
-
597 
-
598  // Device API
-
599  virtual DeviceType GetType() const { return Type; }
-
600  static const DeviceType Type;
-
601 
-
602  // Stage API
-
603  virtual int SetPositionUm(double pos) = 0;
-
604  virtual int SetRelativePositionUm(double d) = 0;
-
605  virtual int Move(double velocity) = 0;
-
606  virtual int Stop() = 0;
-
607  virtual int Home() = 0;
-
608  virtual int SetAdapterOriginUm(double d) = 0;
-
609  virtual int GetPositionUm(double& pos) = 0;
-
610  virtual int SetPositionSteps(long steps) = 0;
-
611  virtual int GetPositionSteps(long& steps) = 0;
-
612  virtual int SetOrigin() = 0;
-
613  virtual int GetLimits(double& lower, double& upper) = 0;
-
614 
-
628  virtual int GetFocusDirection(FocusDirection& direction) = 0;
-
629 
-
637  virtual int IsStageSequenceable(bool& isSequenceable) const = 0;
-
638 
-
648  virtual int IsStageLinearSequenceable(bool& isSequenceable) const = 0;
+
340  // Camera API
+
349  virtual int SnapImage() = 0;
+
374  virtual const unsigned char* GetImageBuffer() = 0;
+
386  virtual const unsigned char* GetImageBuffer(unsigned channelNr) = 0;
+
390  virtual const unsigned int* GetImageBufferAsRGB32() = 0;
+
395  virtual unsigned GetNumberOfComponents() const = 0;
+
399  virtual int GetComponentName(unsigned component, char* name) = 0;
+
405  virtual int unsigned GetNumberOfChannels() const = 0;
+
410  virtual int GetChannelName(unsigned channel, char* name) = 0;
+
416  virtual long GetImageBufferSize() const = 0;
+
421  virtual unsigned GetImageWidth() const = 0;
+
426  virtual unsigned GetImageHeight() const = 0;
+
431  virtual unsigned GetImageBytesPerPixel() const = 0;
+
438  virtual unsigned GetBitDepth() const = 0;
+
443  virtual double GetPixelSizeUm() const = 0;
+
447  virtual int GetBinning() const = 0;
+
451  virtual int SetBinning(int binSize) = 0;
+
455  virtual void SetExposure(double exp_ms) = 0;
+
459  virtual double GetExposure() const = 0;
+
473  virtual int SetROI(unsigned x, unsigned y, unsigned xSize, unsigned ySize) = 0;
+
477  virtual int GetROI(unsigned& x, unsigned& y, unsigned& xSize, unsigned& ySize) = 0;
+
481  virtual int ClearROI() = 0;
+
482  virtual bool SupportsMultiROI() = 0;
+
483  virtual bool IsMultiROISet() = 0;
+
484  virtual int GetMultiROICount(unsigned& count) = 0;
+
485  virtual int SetMultiROI(const unsigned* xs, const unsigned* ys,
+
486  const unsigned* widths, const unsigned* heights,
+
487  unsigned numROIs) = 0;
+
488  virtual int GetMultiROI(unsigned* xs, unsigned* ys, unsigned* widths,
+
489  unsigned* heights, unsigned* length) = 0;
+
493  virtual int StartSequenceAcquisition(long numImages, double interval_ms, bool stopOnOverflow) = 0;
+
498  virtual int StartSequenceAcquisition(double interval_ms) = 0;
+
502  virtual int StopSequenceAcquisition() = 0;
+
506  virtual int PrepareSequenceAcqusition() = 0;
+
511  virtual bool IsCapturing() = 0;
+
512 
+
519  virtual void GetTags(char* serializedMetadata) = 0;
+
520 
+
528  virtual void AddTag(const char* key, const char* deviceLabel, const char* value) = 0;
+
529 
+
535  virtual void RemoveTag(const char* key) = 0;
+
536 
+
542  virtual int IsExposureSequenceable(bool& isSequenceable) const = 0;
+
543 
+
544  // Sequence functions
+
545  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
+
546  // computer commands.
+
547  // Sequences of exposures can be uploaded to the camera. The camera will cycle through
+
548  // the uploaded list of exposures (triggered by either an internal or
+
549  // external trigger). If the device is capable (and ready) to do so isSequenceable will
+
550  // be true. If your device can not execute this (true for most cameras)
+
551  // simply set IsExposureSequenceable to false
+
552  virtual int GetExposureSequenceMaxLength(long& nrEvents) const = 0;
+
553  virtual int StartExposureSequence() = 0;
+
554  virtual int StopExposureSequence() = 0;
+
555  // Remove all values in the sequence
+
556  virtual int ClearExposureSequence() = 0;
+
557  // Add one value to the sequence
+
558  virtual int AddToExposureSequence(double exposureTime_ms) = 0;
+
559  // Signal that we are done sending sequence values so that the adapter can send the whole sequence to the device
+
560  virtual int SendExposureSequence() const = 0;
+
561  };
+
562 
+
566  class Shutter : public Device
+
567  {
+
568  public:
+
569  Shutter() {}
+
570  virtual ~Shutter() {}
+
571 
+
572  // Device API
+
573  virtual DeviceType GetType() const { return Type; }
+
574  static const DeviceType Type;
+
575 
+
576  // Shutter API
+
577  virtual int SetOpen(bool open = true) = 0;
+
578  virtual int GetOpen(bool& open) = 0;
+
583  virtual int Fire(double deltaT) = 0;
+
584  };
+
585 
+
589  class Stage : public Device
+
590  {
+
591  public:
+
592  Stage() {}
+
593  virtual ~Stage() {}
+
594 
+
595  // Device API
+
596  virtual DeviceType GetType() const { return Type; }
+
597  static const DeviceType Type;
+
598 
+
599  // Stage API
+
600  virtual int SetPositionUm(double pos) = 0;
+
601  virtual int SetRelativePositionUm(double d) = 0;
+
602  virtual int Move(double velocity) = 0;
+
603  virtual int Stop() = 0;
+
604  virtual int Home() = 0;
+
605  virtual int SetAdapterOriginUm(double d) = 0;
+
606  virtual int GetPositionUm(double& pos) = 0;
+
607  virtual int SetPositionSteps(long steps) = 0;
+
608  virtual int GetPositionSteps(long& steps) = 0;
+
609  virtual int SetOrigin() = 0;
+
610  virtual int GetLimits(double& lower, double& upper) = 0;
+
611 
+
625  virtual int GetFocusDirection(FocusDirection& direction) = 0;
+
626 
+
634  virtual int IsStageSequenceable(bool& isSequenceable) const = 0;
+
635 
+
645  virtual int IsStageLinearSequenceable(bool& isSequenceable) const = 0;
+
646 
+
647  // Check if a stage has continuous focusing capability (positions can be set while continuous focus runs).
+
648  virtual bool IsContinuousFocusDrive() const = 0;
649 
-
650  // Check if a stage has continuous focusing capability (positions can be set while continuous focus runs).
-
651  virtual bool IsContinuousFocusDrive() const = 0;
-
652 
-
653  // Sequence functions
-
654  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
-
655  // computer commands.
-
656  // Sequences of positions can be uploaded to the stage. The device will cycle through
-
657  // the uploaded list of states (triggered by an external trigger - most often coming
-
658  // from the camera). If the device is capable (and ready) to do so isSequenceable will
-
659  // be true. If your device can not execute this (true for most stages)
-
660  // simply set isSequenceable to false
-
661  virtual int GetStageSequenceMaxLength(long& nrEvents) const = 0;
-
662  virtual int StartStageSequence() = 0;
-
663  virtual int StopStageSequence() = 0;
-
667  virtual int ClearStageSequence() = 0;
-
671  virtual int AddToStageSequence(double position) = 0;
-
676  virtual int SendStageSequence() = 0;
-
677 
-
686  virtual int SetStageLinearSequence(double dZ_um, long nSlices) = 0;
-
687  };
-
688 
-
692  class XYStage : public Device
-
693  {
-
694  public:
-
695  XYStage() {}
-
696  virtual ~XYStage() {}
-
697 
-
698  // Device API
-
699  virtual DeviceType GetType() const { return Type; }
-
700  static const DeviceType Type;
-
701 
-
702  // XYStage API
-
703  // it is recommended that device adapters implement the "Steps" methods
-
704  // taking long integers but leave the default implementations (in
-
705  // DeviceBase.h) for the "Um" methods taking doubles. The latter utilize
-
706  // directionality and origin settings set by user and operate via the
-
707  // "Steps" methods. The step size is the inherent minimum distance/step
-
708  // and should be defined by the adapter.
-
709  virtual int SetPositionUm(double x, double y) = 0;
-
710  virtual int SetRelativePositionUm(double dx, double dy) = 0;
-
711  virtual int SetAdapterOriginUm(double x, double y) = 0;
-
712  virtual int GetPositionUm(double& x, double& y) = 0;
-
713  virtual int GetLimitsUm(double& xMin, double& xMax, double& yMin, double& yMax) = 0;
-
714  virtual int Move(double vx, double vy) = 0;
-
715 
-
716  virtual int SetPositionSteps(long x, long y) = 0;
-
717  virtual int GetPositionSteps(long& x, long& y) = 0;
-
718  virtual int SetRelativePositionSteps(long x, long y) = 0;
-
719  virtual int Home() = 0;
-
720  virtual int Stop() = 0;
-
721 
-
725  virtual int SetOrigin() = 0;
-
726 
-
731  virtual int SetXOrigin() = 0;
-
732 
-
737  virtual int SetYOrigin() = 0;
-
738 
-
739  virtual int GetStepLimits(long& xMin, long& xMax, long& yMin, long& yMax) = 0;
-
740  virtual double GetStepSizeXUm() = 0;
-
741  virtual double GetStepSizeYUm() = 0;
-
747  virtual int IsXYStageSequenceable(bool& isSequenceable) const = 0;
-
748  // Sequence functions
-
749  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
-
750  // computer commands.
-
751  // Sequences of positions can be uploaded to the XY stage. The device will cycle through
-
752  // the uploaded list of states (triggered by an external trigger - most often coming
-
753  // from the camera). If the device is capable (and ready) to do so isSequenceable will
-
754  // be true. If your device can not execute this (true for most XY stages
-
755  // simply set isSequenceable to false
-
756  virtual int GetXYStageSequenceMaxLength(long& nrEvents) const = 0;
-
757  virtual int StartXYStageSequence() = 0;
-
758  virtual int StopXYStageSequence() = 0;
-
762  virtual int ClearXYStageSequence() = 0;
-
766  virtual int AddToXYStageSequence(double positionX, double positionY) = 0;
-
771  virtual int SendXYStageSequence() = 0;
-
772 
-
773  };
-
774 
-
778  class State : public Device
-
779  {
-
780  public:
-
781  State() {}
-
782  virtual ~State() {}
-
783 
-
784  // MMDevice API
-
785  virtual DeviceType GetType() const { return Type; }
-
786  static const DeviceType Type;
-
787 
-
788  // MMStateDevice API
-
789  virtual int SetPosition(long pos) = 0;
-
790  virtual int SetPosition(const char* label) = 0;
-
791  virtual int GetPosition(long& pos) const = 0;
-
792  virtual int GetPosition(char* label) const = 0;
-
793  virtual int GetPositionLabel(long pos, char* label) const = 0;
-
794  virtual int GetLabelPosition(const char* label, long& pos) const = 0;
-
795  virtual int SetPositionLabel(long pos, const char* label) = 0;
-
796  virtual unsigned long GetNumberOfPositions() const = 0;
-
797  virtual int SetGateOpen(bool open = true) = 0;
-
798  virtual int GetGateOpen(bool& open) = 0;
-
799  };
-
800 
-
804  class Serial : public Device
-
805  {
-
806  public:
-
807  Serial() {}
-
808  virtual ~Serial() {}
-
809 
-
810  // MMDevice API
-
811  virtual DeviceType GetType() const { return Type; }
-
812  static const DeviceType Type;
-
813 
-
814  // Serial API
-
815  virtual PortType GetPortType() const = 0;
-
816  virtual int SetCommand(const char* command, const char* term) = 0;
-
817  virtual int GetAnswer(char* txt, unsigned maxChars, const char* term) = 0;
-
818  virtual int Write(const unsigned char* buf, unsigned long bufLen) = 0;
-
819  virtual int Read(unsigned char* buf, unsigned long bufLen, unsigned long& charsRead) = 0;
-
820  virtual int Purge() = 0;
-
821  };
-
822 
-
826  class AutoFocus : public Device
-
827  {
-
828  public:
-
829  AutoFocus() {}
-
830  virtual ~AutoFocus() {}
-
831 
-
832  // MMDevice API
-
833  virtual DeviceType GetType() const { return Type; }
-
834  static const DeviceType Type;
-
835 
-
836  // AutoFocus API
-
837  virtual int SetContinuousFocusing(bool state) = 0;
-
838  virtual int GetContinuousFocusing(bool& state) = 0;
-
839  virtual bool IsContinuousFocusLocked() = 0;
-
840  virtual int FullFocus() = 0;
-
841  virtual int IncrementalFocus() = 0;
-
842  virtual int GetLastFocusScore(double& score) = 0;
-
843  virtual int GetCurrentFocusScore(double& score) = 0;
-
844  virtual int AutoSetParameters() = 0;
-
845  virtual int GetOffset(double &offset) = 0;
-
846  virtual int SetOffset(double offset) = 0;
-
847  };
-
848 
-
852  class ImageProcessor : public Device
-
853  {
-
854  public:
-
855  ImageProcessor() {}
-
856  virtual ~ImageProcessor() {}
-
857 
-
858  // MMDevice API
-
859  virtual DeviceType GetType() const { return Type; }
-
860  static const DeviceType Type;
+
650  // Sequence functions
+
651  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
+
652  // computer commands.
+
653  // Sequences of positions can be uploaded to the stage. The device will cycle through
+
654  // the uploaded list of states (triggered by an external trigger - most often coming
+
655  // from the camera). If the device is capable (and ready) to do so isSequenceable will
+
656  // be true. If your device can not execute this (true for most stages)
+
657  // simply set isSequenceable to false
+
658  virtual int GetStageSequenceMaxLength(long& nrEvents) const = 0;
+
659  virtual int StartStageSequence() = 0;
+
660  virtual int StopStageSequence() = 0;
+
664  virtual int ClearStageSequence() = 0;
+
668  virtual int AddToStageSequence(double position) = 0;
+
673  virtual int SendStageSequence() = 0;
+
674 
+
683  virtual int SetStageLinearSequence(double dZ_um, long nSlices) = 0;
+
684  };
+
685 
+
689  class XYStage : public Device
+
690  {
+
691  public:
+
692  XYStage() {}
+
693  virtual ~XYStage() {}
+
694 
+
695  // Device API
+
696  virtual DeviceType GetType() const { return Type; }
+
697  static const DeviceType Type;
+
698 
+
699  // XYStage API
+
700  // it is recommended that device adapters implement the "Steps" methods
+
701  // taking long integers but leave the default implementations (in
+
702  // DeviceBase.h) for the "Um" methods taking doubles. The latter utilize
+
703  // directionality and origin settings set by user and operate via the
+
704  // "Steps" methods. The step size is the inherent minimum distance/step
+
705  // and should be defined by the adapter.
+
706  virtual int SetPositionUm(double x, double y) = 0;
+
707  virtual int SetRelativePositionUm(double dx, double dy) = 0;
+
708  virtual int SetAdapterOriginUm(double x, double y) = 0;
+
709  virtual int GetPositionUm(double& x, double& y) = 0;
+
710  virtual int GetLimitsUm(double& xMin, double& xMax, double& yMin, double& yMax) = 0;
+
711  virtual int Move(double vx, double vy) = 0;
+
712 
+
713  virtual int SetPositionSteps(long x, long y) = 0;
+
714  virtual int GetPositionSteps(long& x, long& y) = 0;
+
715  virtual int SetRelativePositionSteps(long x, long y) = 0;
+
716  virtual int Home() = 0;
+
717  virtual int Stop() = 0;
+
718 
+
722  virtual int SetOrigin() = 0;
+
723 
+
728  virtual int SetXOrigin() = 0;
+
729 
+
734  virtual int SetYOrigin() = 0;
+
735 
+
736  virtual int GetStepLimits(long& xMin, long& xMax, long& yMin, long& yMax) = 0;
+
737  virtual double GetStepSizeXUm() = 0;
+
738  virtual double GetStepSizeYUm() = 0;
+
744  virtual int IsXYStageSequenceable(bool& isSequenceable) const = 0;
+
745  // Sequence functions
+
746  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
+
747  // computer commands.
+
748  // Sequences of positions can be uploaded to the XY stage. The device will cycle through
+
749  // the uploaded list of states (triggered by an external trigger - most often coming
+
750  // from the camera). If the device is capable (and ready) to do so isSequenceable will
+
751  // be true. If your device can not execute this (true for most XY stages
+
752  // simply set isSequenceable to false
+
753  virtual int GetXYStageSequenceMaxLength(long& nrEvents) const = 0;
+
754  virtual int StartXYStageSequence() = 0;
+
755  virtual int StopXYStageSequence() = 0;
+
759  virtual int ClearXYStageSequence() = 0;
+
763  virtual int AddToXYStageSequence(double positionX, double positionY) = 0;
+
768  virtual int SendXYStageSequence() = 0;
+
769 
+
770  };
+
771 
+
775  class State : public Device
+
776  {
+
777  public:
+
778  State() {}
+
779  virtual ~State() {}
+
780 
+
781  // MMDevice API
+
782  virtual DeviceType GetType() const { return Type; }
+
783  static const DeviceType Type;
+
784 
+
785  // MMStateDevice API
+
786  virtual int SetPosition(long pos) = 0;
+
787  virtual int SetPosition(const char* label) = 0;
+
788  virtual int GetPosition(long& pos) const = 0;
+
789  virtual int GetPosition(char* label) const = 0;
+
790  virtual int GetPositionLabel(long pos, char* label) const = 0;
+
791  virtual int GetLabelPosition(const char* label, long& pos) const = 0;
+
792  virtual int SetPositionLabel(long pos, const char* label) = 0;
+
793  virtual unsigned long GetNumberOfPositions() const = 0;
+
794  virtual int SetGateOpen(bool open = true) = 0;
+
795  virtual int GetGateOpen(bool& open) = 0;
+
796  };
+
797 
+
801  class Serial : public Device
+
802  {
+
803  public:
+
804  Serial() {}
+
805  virtual ~Serial() {}
+
806 
+
807  // MMDevice API
+
808  virtual DeviceType GetType() const { return Type; }
+
809  static const DeviceType Type;
+
810 
+
811  // Serial API
+
812  virtual PortType GetPortType() const = 0;
+
813  virtual int SetCommand(const char* command, const char* term) = 0;
+
814  virtual int GetAnswer(char* txt, unsigned maxChars, const char* term) = 0;
+
815  virtual int Write(const unsigned char* buf, unsigned long bufLen) = 0;
+
816  virtual int Read(unsigned char* buf, unsigned long bufLen, unsigned long& charsRead) = 0;
+
817  virtual int Purge() = 0;
+
818  };
+
819 
+
823  class AutoFocus : public Device
+
824  {
+
825  public:
+
826  AutoFocus() {}
+
827  virtual ~AutoFocus() {}
+
828 
+
829  // MMDevice API
+
830  virtual DeviceType GetType() const { return Type; }
+
831  static const DeviceType Type;
+
832 
+
833  // AutoFocus API
+
834  virtual int SetContinuousFocusing(bool state) = 0;
+
835  virtual int GetContinuousFocusing(bool& state) = 0;
+
836  virtual bool IsContinuousFocusLocked() = 0;
+
837  virtual int FullFocus() = 0;
+
838  virtual int IncrementalFocus() = 0;
+
839  virtual int GetLastFocusScore(double& score) = 0;
+
840  virtual int GetCurrentFocusScore(double& score) = 0;
+
841  virtual int AutoSetParameters() = 0;
+
842  virtual int GetOffset(double &offset) = 0;
+
843  virtual int SetOffset(double offset) = 0;
+
844  };
+
845 
+
849  class ImageProcessor : public Device
+
850  {
+
851  public:
+
852  ImageProcessor() {}
+
853  virtual ~ImageProcessor() {}
+
854 
+
855  // MMDevice API
+
856  virtual DeviceType GetType() const { return Type; }
+
857  static const DeviceType Type;
+
858 
+
859  // image processor API
+
860  virtual int Process(unsigned char* buffer, unsigned width, unsigned height, unsigned byteDepth) = 0;
861 
-
862  // image processor API
-
863  virtual int Process(unsigned char* buffer, unsigned width, unsigned height, unsigned byteDepth) = 0;
+
862 
+
863  };
864 
-
865 
-
866  };
-
867 
-
871  class SignalIO : public Device
-
872  {
-
873  public:
-
874  SignalIO() {}
-
875  virtual ~SignalIO() {}
-
876 
-
877  // MMDevice API
-
878  virtual DeviceType GetType() const { return Type; }
-
879  static const DeviceType Type;
-
880 
-
881  // signal io API
-
882  virtual int SetGateOpen(bool open = true) = 0;
-
883  virtual int GetGateOpen(bool& open) = 0;
-
884  virtual int SetSignal(double volts) = 0;
-
885  virtual int GetSignal(double& volts) = 0;
-
886  virtual int GetLimits(double& minVolts, double& maxVolts) = 0;
-
887 
-
899  virtual int IsDASequenceable(bool& isSequenceable) const = 0;
-
900 
-
901  // Sequence functions
-
902  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
-
903  // computer commands.
-
904  // Sequences of voltages can be uploaded to the DA. The device will cycle through
-
905  // the uploaded list of voltages (triggered by an external trigger - most often coming
-
906  // from the camera). If the device is capable (and ready) to do so isSequenceable will
-
907  // be true. If your device can not execute this simply set isSequenceable to false
-
913  virtual int GetDASequenceMaxLength(long& nrEvents) const = 0;
-
919  virtual int StartDASequence() = 0;
-
924  virtual int StopDASequence() = 0;
-
933  virtual int ClearDASequence() = 0;
-
934 
-
941  virtual int AddToDASequence(double voltage) = 0;
-
948  virtual int SendDASequence() = 0;
-
949 
-
950  };
-
951 
-
955  class Magnifier : public Device
-
956  {
-
957  public:
-
958  Magnifier() {}
-
959  virtual ~Magnifier() {}
-
960 
-
961  // MMDevice API
-
962  virtual DeviceType GetType() const { return Type; }
-
963  static const DeviceType Type;
+
868  class SignalIO : public Device
+
869  {
+
870  public:
+
871  SignalIO() {}
+
872  virtual ~SignalIO() {}
+
873 
+
874  // MMDevice API
+
875  virtual DeviceType GetType() const { return Type; }
+
876  static const DeviceType Type;
+
877 
+
878  // signal io API
+
879  virtual int SetGateOpen(bool open = true) = 0;
+
880  virtual int GetGateOpen(bool& open) = 0;
+
881  virtual int SetSignal(double volts) = 0;
+
882  virtual int GetSignal(double& volts) = 0;
+
883  virtual int GetLimits(double& minVolts, double& maxVolts) = 0;
+
884 
+
896  virtual int IsDASequenceable(bool& isSequenceable) const = 0;
+
897 
+
898  // Sequence functions
+
899  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
+
900  // computer commands.
+
901  // Sequences of voltages can be uploaded to the DA. The device will cycle through
+
902  // the uploaded list of voltages (triggered by an external trigger - most often coming
+
903  // from the camera). If the device is capable (and ready) to do so isSequenceable will
+
904  // be true. If your device can not execute this simply set isSequenceable to false
+
910  virtual int GetDASequenceMaxLength(long& nrEvents) const = 0;
+
916  virtual int StartDASequence() = 0;
+
921  virtual int StopDASequence() = 0;
+
930  virtual int ClearDASequence() = 0;
+
931 
+
938  virtual int AddToDASequence(double voltage) = 0;
+
945  virtual int SendDASequence() = 0;
+
946 
+
947  };
+
948 
+
952  class Magnifier : public Device
+
953  {
+
954  public:
+
955  Magnifier() {}
+
956  virtual ~Magnifier() {}
+
957 
+
958  // MMDevice API
+
959  virtual DeviceType GetType() const { return Type; }
+
960  static const DeviceType Type;
+
961 
+
962  virtual double GetMagnification() = 0;
+
963  };
964 
-
965  virtual double GetMagnification() = 0;
-
966  };
-
967 
-
968 
-
972  class SLM : public Device
-
973  {
-
974  public:
-
975  SLM() {}
-
976  virtual ~SLM() {}
+
965 
+
969  class SLM : public Device
+
970  {
+
971  public:
+
972  SLM() {}
+
973  virtual ~SLM() {}
+
974 
+
975  virtual DeviceType GetType() const { return Type; }
+
976  static const DeviceType Type;
977 
-
978  virtual DeviceType GetType() const { return Type; }
-
979  static const DeviceType Type;
-
980 
-
981  // SLM API
-
985  virtual int SetImage(unsigned char * pixels) = 0;
-
986 
-
990  virtual int SetImage(unsigned int * pixels) = 0;
-
991 
-
995  virtual int DisplayImage() = 0;
-
996 
-
1000  virtual int SetPixelsTo(unsigned char intensity) = 0;
-
1001 
-
1005  virtual int SetPixelsTo(unsigned char red, unsigned char green, unsigned char blue) = 0;
-
1006 
-
1010  virtual int SetExposure(double interval_ms) = 0;
-
1011 
-
1015  virtual double GetExposure() = 0;
-
1016 
-
1020  virtual unsigned GetWidth() = 0;
-
1021 
-
1025  virtual unsigned GetHeight() = 0;
-
1026 
-
1030  virtual unsigned GetNumberOfComponents() = 0;
-
1031 
-
1035  virtual unsigned GetBytesPerPixel() = 0;
-
1036 
-
1037  // SLM Sequence functions
-
1038  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
-
1039  // computer commands.
-
1040  // Sequences of images can be uploaded to the SLM. The SLM will cycle through
-
1041  // the uploaded list of images (perhaps triggered by an external trigger or by
-
1042  // an internal clock.
-
1043  // If the device is capable (and ready) to do so IsSLMSequenceable will return
-
1044  // be true. If your device can not execute sequences, IsSLMSequenceable returns false.
-
1045 
-
1056  virtual int IsSLMSequenceable(bool& isSequenceable) const = 0;
-
1057 
-
1063  virtual int GetSLMSequenceMaxLength(long& nrEvents) const = 0;
-
1064 
-
1070  virtual int StartSLMSequence() = 0;
-
1071 
-
1076  virtual int StopSLMSequence() = 0;
-
1077 
-
1087  virtual int ClearSLMSequence() = 0;
-
1088 
-
1096  virtual int AddToSLMSequence(const unsigned char * const pixels) = 0;
-
1097 
-
1105  virtual int AddToSLMSequence(const unsigned int * const pixels) = 0;
-
1106 
-
1113  virtual int SendSLMSequence() = 0;
-
1114 
-
1115  };
-
1116 
-
1120  class Galvo : public Device
-
1121  {
-
1122  public:
-
1123  Galvo() {}
-
1124  virtual ~Galvo() {}
+
978  // SLM API
+
982  virtual int SetImage(unsigned char * pixels) = 0;
+
983 
+
987  virtual int SetImage(unsigned int * pixels) = 0;
+
988 
+
992  virtual int DisplayImage() = 0;
+
993 
+
997  virtual int SetPixelsTo(unsigned char intensity) = 0;
+
998 
+
1002  virtual int SetPixelsTo(unsigned char red, unsigned char green, unsigned char blue) = 0;
+
1003 
+
1007  virtual int SetExposure(double interval_ms) = 0;
+
1008 
+
1012  virtual double GetExposure() = 0;
+
1013 
+
1017  virtual unsigned GetWidth() = 0;
+
1018 
+
1022  virtual unsigned GetHeight() = 0;
+
1023 
+
1027  virtual unsigned GetNumberOfComponents() = 0;
+
1028 
+
1032  virtual unsigned GetBytesPerPixel() = 0;
+
1033 
+
1034  // SLM Sequence functions
+
1035  // Sequences can be used for fast acquisitions, synchronized by TTLs rather than
+
1036  // computer commands.
+
1037  // Sequences of images can be uploaded to the SLM. The SLM will cycle through
+
1038  // the uploaded list of images (perhaps triggered by an external trigger or by
+
1039  // an internal clock.
+
1040  // If the device is capable (and ready) to do so IsSLMSequenceable will return
+
1041  // be true. If your device can not execute sequences, IsSLMSequenceable returns false.
+
1042 
+
1053  virtual int IsSLMSequenceable(bool& isSequenceable) const = 0;
+
1054 
+
1060  virtual int GetSLMSequenceMaxLength(long& nrEvents) const = 0;
+
1061 
+
1067  virtual int StartSLMSequence() = 0;
+
1068 
+
1073  virtual int StopSLMSequence() = 0;
+
1074 
+
1084  virtual int ClearSLMSequence() = 0;
+
1085 
+
1093  virtual int AddToSLMSequence(const unsigned char * const pixels) = 0;
+
1094 
+
1102  virtual int AddToSLMSequence(const unsigned int * const pixels) = 0;
+
1103 
+
1110  virtual int SendSLMSequence() = 0;
+
1111 
+
1112  };
+
1113 
+
1117  class Galvo : public Device
+
1118  {
+
1119  public:
+
1120  Galvo() {}
+
1121  virtual ~Galvo() {}
+
1122 
+
1123  virtual DeviceType GetType() const { return Type; }
+
1124  static const DeviceType Type;
1125 
-
1126  virtual DeviceType GetType() const { return Type; }
-
1127  static const DeviceType Type;
-
1128 
-
1129  //Galvo API:
-
1130 
-
1136  virtual int PointAndFire(double x, double y, double time_us) = 0;
-
1137  virtual int SetSpotInterval(double pulseInterval_us) = 0;
-
1138  virtual int SetPosition(double x, double y) = 0;
-
1139  virtual int GetPosition(double& x, double& y) = 0;
-
1140  virtual int SetIlluminationState(bool on) = 0;
-
1144  virtual double GetXRange() = 0;
-
1149  virtual double GetXMinimum() = 0;
-
1153  virtual double GetYRange() = 0;
-
1158  virtual double GetYMinimum() = 0;
-
1159  virtual int AddPolygonVertex(int polygonIndex, double x, double y) = 0;
-
1160  virtual int DeletePolygons() = 0;
-
1161  virtual int RunSequence() = 0;
-
1162  virtual int LoadPolygons() = 0;
-
1163  virtual int SetPolygonRepetitions(int repetitions) = 0;
-
1164  virtual int RunPolygons() = 0;
-
1165  virtual int StopSequence() = 0;
-
1166  virtual int GetChannel(char* channelName) = 0;
-
1167  };
-
1168 
-
1173  class Hub : public Device
-
1174  {
-
1175  public:
-
1176  Hub() {}
-
1177  virtual ~Hub() {}
-
1178 
-
1179  // MMDevice API
-
1180  virtual DeviceType GetType() const { return Type; }
-
1181  static const DeviceType Type;
-
1182 
-
1195  virtual int DetectInstalledDevices() = 0;
-
1196 
-
1205  virtual void ClearInstalledDevices() = 0;
-
1206 
-
1213  virtual unsigned GetNumberOfInstalledDevices() = 0;
-
1214 
-
1221  virtual Device* GetInstalledDevice(int devIdx) = 0;
-
1222  };
-
1223 
-
1228  class Core
-
1229  {
-
1230  public:
-
1231  Core() {}
-
1232  virtual ~Core() {}
-
1233 
-
1234  virtual int LogMessage(const Device* caller, const char* msg, bool debugOnly) const = 0;
-
1235  virtual Device* GetDevice(const Device* caller, const char* label) = 0;
-
1236  virtual int GetDeviceProperty(const char* deviceName, const char* propName, char* value) = 0;
-
1237  virtual int SetDeviceProperty(const char* deviceName, const char* propName, const char* value) = 0;
-
1238 
-
1240 
-
1248  virtual void GetLoadedDeviceOfType(const Device* caller, MM::DeviceType devType, char* pDeviceName, const unsigned int deviceIterator) = 0;
-
1249 
-
1250  virtual int SetSerialProperties(const char* portName,
-
1251  const char* answerTimeout,
-
1252  const char* baudRate,
-
1253  const char* delayBetweenCharsMs,
-
1254  const char* handshaking,
-
1255  const char* parity,
-
1256  const char* stopBits) = 0;
-
1257  virtual int SetSerialCommand(const Device* caller, const char* portName, const char* command, const char* term) = 0;
-
1258  virtual int GetSerialAnswer(const Device* caller, const char* portName, unsigned long ansLength, char* answer, const char* term) = 0;
-
1259  virtual int WriteToSerial(const Device* caller, const char* port, const unsigned char* buf, unsigned long length) = 0;
-
1260  virtual int ReadFromSerial(const Device* caller, const char* port, unsigned char* buf, unsigned long length, unsigned long& read) = 0;
-
1261  virtual int PurgeSerial(const Device* caller, const char* portName) = 0;
-
1262  virtual MM::PortType GetSerialPortType(const char* portName) const = 0;
-
1263 
-
1264  virtual int OnPropertiesChanged(const Device* caller) = 0;
-
1270  virtual int OnPropertyChanged(const Device* caller, const char* propName, const char* propValue) = 0;
-
1275  virtual int OnStagePositionChanged(const Device* caller, double pos) = 0;
-
1280  virtual int OnXYStagePositionChanged(const Device* caller, double xPos, double yPos) = 0;
-
1284  virtual int OnExposureChanged(const Device* caller, double newExposure) = 0;
-
1288  virtual int OnSLMExposureChanged(const Device* caller, double newExposure) = 0;
-
1292  virtual int OnMagnifierChanged(const Device* caller) = 0;
-
1293 
-
1294  // Deprecated: Return value overflows in ~72 minutes on Windows.
-
1295  // Prefer std::chrono::steady_clock for time delta measurements.
-
1296  virtual unsigned long GetClockTicksUs(const Device* caller) = 0;
-
1297 
-
1298  // Returns monotonic MMTime suitable for time delta measurements.
-
1299  // Time zero is not fixed and may change on every launch.
-
1300  // Prefer std::chrono::steady_clock::now() in new code.
-
1301  virtual MM::MMTime GetCurrentMMTime() = 0;
-
1302 
-
1303  // sequence acquisition
-
1304  virtual int AcqFinished(const Device* caller, int statusCode) = 0;
-
1305  virtual int PrepareForAcq(const Device* caller) = 0;
-
1306  virtual int InsertImage(const Device* caller, const ImgBuffer& buf) = 0;
-
1307  virtual int InsertImage(const Device* caller, const unsigned char* buf, unsigned width, unsigned height, unsigned byteDepth, unsigned nComponents, const char* serializedMetadata, const bool doProcess = true) = 0;
-
1308  virtual int InsertImage(const Device* caller, const unsigned char* buf, unsigned width, unsigned height, unsigned byteDepth, const Metadata* md = 0, const bool doProcess = true) = 0;
-
1310  virtual int InsertImage(const Device* caller, const unsigned char* buf, unsigned width, unsigned height, unsigned byteDepth, const char* serializedMetadata, const bool doProcess = true) = 0;
-
1311  virtual void ClearImageBuffer(const Device* caller) = 0;
-
1312  virtual bool InitializeImageBuffer(unsigned channels, unsigned slices, unsigned int w, unsigned int h, unsigned int pixDepth) = 0;
-
1314  virtual int InsertMultiChannel(const Device* caller, const unsigned char* buf, unsigned numChannels, unsigned width, unsigned height, unsigned byteDepth, Metadata* md = 0) = 0;
-
1315 
-
1316  // autofocus
-
1317  // TODO This interface needs improvement: the caller pointer should be
-
1318  // passed, and it should be clarified whether the use of these methods is
-
1319  // to be limited to autofocus or not. - Mark T.
-
1320  virtual const char* GetImage() = 0;
-
1321  virtual int GetImageDimensions(int& width, int& height, int& depth) = 0;
-
1322  virtual int GetFocusPosition(double& pos) = 0;
-
1323  virtual int SetFocusPosition(double pos) = 0;
-
1324  virtual int MoveFocus(double velocity) = 0;
-
1325  virtual int SetXYPosition(double x, double y) = 0;
-
1326  virtual int GetXYPosition(double& x, double& y) = 0;
-
1327  virtual int MoveXYStage(double vX, double vY) = 0;
-
1328  virtual int SetExposure(double expMs) = 0;
-
1329  virtual int GetExposure(double& expMs) = 0;
-
1330  virtual int SetConfig(const char* group, const char* name) = 0;
-
1331  virtual int GetCurrentConfig(const char* group, int bufLen, char* name) = 0;
-
1332  virtual int GetChannelConfig(char* channelConfigName, const unsigned int channelConfigIterator) = 0;
+
1126  //Galvo API:
+
1127 
+
1133  virtual int PointAndFire(double x, double y, double time_us) = 0;
+
1134  virtual int SetSpotInterval(double pulseInterval_us) = 0;
+
1135  virtual int SetPosition(double x, double y) = 0;
+
1136  virtual int GetPosition(double& x, double& y) = 0;
+
1137  virtual int SetIlluminationState(bool on) = 0;
+
1141  virtual double GetXRange() = 0;
+
1146  virtual double GetXMinimum() = 0;
+
1150  virtual double GetYRange() = 0;
+
1155  virtual double GetYMinimum() = 0;
+
1156  virtual int AddPolygonVertex(int polygonIndex, double x, double y) = 0;
+
1157  virtual int DeletePolygons() = 0;
+
1158  virtual int RunSequence() = 0;
+
1159  virtual int LoadPolygons() = 0;
+
1160  virtual int SetPolygonRepetitions(int repetitions) = 0;
+
1161  virtual int RunPolygons() = 0;
+
1162  virtual int StopSequence() = 0;
+
1163  virtual int GetChannel(char* channelName) = 0;
+
1164  };
+
1165 
+
1170  class Hub : public Device
+
1171  {
+
1172  public:
+
1173  Hub() {}
+
1174  virtual ~Hub() {}
+
1175 
+
1176  // MMDevice API
+
1177  virtual DeviceType GetType() const { return Type; }
+
1178  static const DeviceType Type;
+
1179 
+
1192  virtual int DetectInstalledDevices() = 0;
+
1193 
+
1202  virtual void ClearInstalledDevices() = 0;
+
1203 
+
1210  virtual unsigned GetNumberOfInstalledDevices() = 0;
+
1211 
+
1218  virtual Device* GetInstalledDevice(int devIdx) = 0;
+
1219  };
+
1220 
+
1225  class Core
+
1226  {
+
1227  public:
+
1228  Core() {}
+
1229  virtual ~Core() {}
+
1230 
+
1231  virtual int LogMessage(const Device* caller, const char* msg, bool debugOnly) const = 0;
+
1232  virtual Device* GetDevice(const Device* caller, const char* label) = 0;
+
1233  virtual int GetDeviceProperty(const char* deviceName, const char* propName, char* value) = 0;
+
1234  virtual int SetDeviceProperty(const char* deviceName, const char* propName, const char* value) = 0;
+
1235 
+
1237 
+
1245  virtual void GetLoadedDeviceOfType(const Device* caller, MM::DeviceType devType, char* pDeviceName, const unsigned int deviceIterator) = 0;
+
1246 
+
1247  virtual int SetSerialProperties(const char* portName,
+
1248  const char* answerTimeout,
+
1249  const char* baudRate,
+
1250  const char* delayBetweenCharsMs,
+
1251  const char* handshaking,
+
1252  const char* parity,
+
1253  const char* stopBits) = 0;
+
1254  virtual int SetSerialCommand(const Device* caller, const char* portName, const char* command, const char* term) = 0;
+
1255  virtual int GetSerialAnswer(const Device* caller, const char* portName, unsigned long ansLength, char* answer, const char* term) = 0;
+
1256  virtual int WriteToSerial(const Device* caller, const char* port, const unsigned char* buf, unsigned long length) = 0;
+
1257  virtual int ReadFromSerial(const Device* caller, const char* port, unsigned char* buf, unsigned long length, unsigned long& read) = 0;
+
1258  virtual int PurgeSerial(const Device* caller, const char* portName) = 0;
+
1259  virtual MM::PortType GetSerialPortType(const char* portName) const = 0;
+
1260 
+
1261  virtual int OnPropertiesChanged(const Device* caller) = 0;
+
1267  virtual int OnPropertyChanged(const Device* caller, const char* propName, const char* propValue) = 0;
+
1272  virtual int OnStagePositionChanged(const Device* caller, double pos) = 0;
+
1277  virtual int OnXYStagePositionChanged(const Device* caller, double xPos, double yPos) = 0;
+
1281  virtual int OnExposureChanged(const Device* caller, double newExposure) = 0;
+
1285  virtual int OnSLMExposureChanged(const Device* caller, double newExposure) = 0;
+
1289  virtual int OnMagnifierChanged(const Device* caller) = 0;
+
1290 
+
1291  // Deprecated: Return value overflows in ~72 minutes on Windows.
+
1292  // Prefer std::chrono::steady_clock for time delta measurements.
+
1293  virtual unsigned long GetClockTicksUs(const Device* caller) = 0;
+
1294 
+
1295  // Returns monotonic MMTime suitable for time delta measurements.
+
1296  // Time zero is not fixed and may change on every launch.
+
1297  // Prefer std::chrono::steady_clock::now() in new code.
+
1298  virtual MM::MMTime GetCurrentMMTime() = 0;
+
1299 
+
1300  // sequence acquisition
+
1301  virtual int AcqFinished(const Device* caller, int statusCode) = 0;
+
1302  virtual int PrepareForAcq(const Device* caller) = 0;
+
1303  virtual int InsertImage(const Device* caller, const ImgBuffer& buf) = 0;
+
1304  virtual int InsertImage(const Device* caller, const unsigned char* buf, unsigned width, unsigned height, unsigned byteDepth, unsigned nComponents, const char* serializedMetadata, const bool doProcess = true) = 0;
+
1305  virtual int InsertImage(const Device* caller, const unsigned char* buf, unsigned width, unsigned height, unsigned byteDepth, const Metadata* md = 0, const bool doProcess = true) = 0;
+
1307  virtual int InsertImage(const Device* caller, const unsigned char* buf, unsigned width, unsigned height, unsigned byteDepth, const char* serializedMetadata, const bool doProcess = true) = 0;
+
1308  virtual void ClearImageBuffer(const Device* caller) = 0;
+
1309  virtual bool InitializeImageBuffer(unsigned channels, unsigned slices, unsigned int w, unsigned int h, unsigned int pixDepth) = 0;
+
1311  virtual int InsertMultiChannel(const Device* caller, const unsigned char* buf, unsigned numChannels, unsigned width, unsigned height, unsigned byteDepth, Metadata* md = 0) = 0;
+
1312 
+
1313  // Formerly intended for use by autofocus
+
1314  MM_DEPRECATED(virtual const char* GetImage()) = 0;
+
1315  MM_DEPRECATED(virtual int GetImageDimensions(int& width, int& height, int& depth)) = 0;
+
1316  MM_DEPRECATED(virtual int GetFocusPosition(double& pos)) = 0;
+
1317  MM_DEPRECATED(virtual int SetFocusPosition(double pos)) = 0;
+
1318  MM_DEPRECATED(virtual int MoveFocus(double velocity)) = 0;
+
1319  MM_DEPRECATED(virtual int SetXYPosition(double x, double y)) = 0;
+
1320  MM_DEPRECATED(virtual int GetXYPosition(double& x, double& y)) = 0;
+
1321  MM_DEPRECATED(virtual int MoveXYStage(double vX, double vY)) = 0;
+
1322  MM_DEPRECATED(virtual int SetExposure(double expMs)) = 0;
+
1323  MM_DEPRECATED(virtual int GetExposure(double& expMs)) = 0;
+
1324  MM_DEPRECATED(virtual int SetConfig(const char* group, const char* name)) = 0;
+
1325  MM_DEPRECATED(virtual int GetCurrentConfig(const char* group, int bufLen, char* name)) = 0;
+
1326  MM_DEPRECATED(virtual int GetChannelConfig(char* channelConfigName, const unsigned int channelConfigIterator)) = 0;
+
1327 
+
1328  // Direct (and dangerous) access to specific device types
+
1329  MM_DEPRECATED(virtual MM::ImageProcessor* GetImageProcessor(const MM::Device* caller)) = 0;
+
1330  MM_DEPRECATED(virtual MM::AutoFocus* GetAutoFocus(const MM::Device* caller)) = 0;
+
1331 
+
1332  virtual MM::Hub* GetParentHub(const MM::Device* caller) const = 0;
1333 
-
1334  // direct access to specific device types
-
1335  // TODO With the exception of GetParentHub(), these should be removed in
-
1336  // favor of methods providing indirect access to the required
-
1337  // functionality. Eventually we should completely avoid access to raw
-
1338  // pointers to devices of other device adapters (because we loose
-
1339  // information on errors, because direct access ignores any
-
1340  // synchronization implemented in the Core, and because it would be bad
-
1341  // if device adapters stored the returned pointer). - Mark T.
-
1342  virtual MM::ImageProcessor* GetImageProcessor(const MM::Device* caller) = 0; // Use not recommended
-
1343  virtual MM::AutoFocus* GetAutoFocus(const MM::Device* caller) = 0; // Use not recommended
-
1344 
-
1345  virtual MM::Hub* GetParentHub(const MM::Device* caller) const = 0;
+
1334  // More direct (and dangerous) access to specific device types
+
1335  MM_DEPRECATED(virtual MM::State* GetStateDevice(const MM::Device* caller, const char* deviceName)) = 0;
+
1336  MM_DEPRECATED(virtual MM::SignalIO* GetSignalIODevice(const MM::Device* caller, const char* deviceName)) = 0;
+
1337 
+
1338  // Asynchronous error handling (never implemented)
+
1340  MM_DEPRECATED(virtual void NextPostedError(int& /*errorCode*/, char* /*pMessage*/, int /*maxlen*/, int& /*messageLength*/)) = 0;
+
1342  MM_DEPRECATED(virtual void PostError(const int, const char*)) = 0;
+
1344  MM_DEPRECATED(virtual void ClearPostedErrors(void)) = 0;
+
1345  };
1346 
-
1347  virtual MM::State* GetStateDevice(const MM::Device* caller, const char* deviceName) = 0; // Use not recommended
-
1348  virtual MM::SignalIO* GetSignalIODevice(const MM::Device* caller, const char* deviceName) = 0; // Use not recommended
-
1349 
-
1350  // asynchronous error handling
-
1351  // TODO We do need a framework for handling asynchronous errors, but this
-
1352  // interface is poorly thought through. I'm working on a better design.
-
1353  // - Mark T.
-
1355  MM_DEPRECATED(virtual void NextPostedError(int& /*errorCode*/, char* /*pMessage*/, int /*maxlen*/, int& /*messageLength*/)) = 0;
-
1357  MM_DEPRECATED(virtual void PostError(const int, const char*)) = 0;
-
1359  MM_DEPRECATED(virtual void ClearPostedErrors(void)) = 0;
-
1360  };
-
1361 
-
1362 } // namespace MM
+
1347 } // namespace MM
ImgBuffer
Definition: ImgBuffer.h:36
-
MM::AutoFocus
Definition: MMDevice.h:827
-
MM::Camera
Definition: MMDevice.h:335
+
MM::AutoFocus
Definition: MMDevice.h:824
+
MM::Camera
Definition: MMDevice.h:332
MM::Camera::GetImageBufferSize
virtual long GetImageBufferSize() const =0
MM::Camera::GetPixelSizeUm
virtual double GetPixelSizeUm() const =0
MM::Camera::ClearROI
virtual int ClearROI()=0
@@ -891,7 +879,7 @@
MM::Camera::SetBinning
virtual int SetBinning(int binSize)=0
MM::Camera::GetImageBuffer
virtual const unsigned char * GetImageBuffer(unsigned channelNr)=0
MM::Camera::GetImageBytesPerPixel
virtual unsigned GetImageBytesPerPixel() const =0
-
MM::Core
Definition: MMDevice.h:1229
+
MM::Core
Definition: MMDevice.h:1226
MM::Core::OnMagnifierChanged
virtual int OnMagnifierChanged(const Device *caller)=0
MM::Core::OnStagePositionChanged
virtual int OnStagePositionChanged(const Device *caller, double pos)=0
MM::Core::GetLoadedDeviceOfType
virtual void GetLoadedDeviceOfType(const Device *caller, MM::DeviceType devType, char *pDeviceName, const unsigned int deviceIterator)=0
Get the names of currently loaded devices of a given type.
@@ -904,9 +892,8 @@
MM::Core::MM_DEPRECATED
MM_DEPRECATED(virtual void ClearPostedErrors(void))=0
MM::Core::OnPropertyChanged
virtual int OnPropertyChanged(const Device *caller, const char *propName, const char *propValue)=0
MM::Core::OnSLMExposureChanged
virtual int OnSLMExposureChanged(const Device *caller, double newExposure)=0
-
MM::Device
Definition: MMDevice.h:224
+
MM::Device
Definition: MMDevice.h:225
MM::Device::GetPropertySequenceMaxLength
virtual int GetPropertySequenceMaxLength(const char *propertyName, long &nrEvents) const =0
-
MM::Device::GetModuleHandle
virtual HDEVMODULE GetModuleHandle() const =0
MM::Device::StopPropertySequence
virtual int StopPropertySequence(const char *propertyName)=0
MM::Device::IsPropertySequenceable
virtual int IsPropertySequenceable(const char *name, bool &isSequenceable) const =0
MM::Device::StartPropertySequence
virtual int StartPropertySequence(const char *propertyName)=0
@@ -914,22 +901,22 @@
MM::Device::AddToPropertySequence
virtual int AddToPropertySequence(const char *propertyName, const char *value)=0
MM::Device::SendPropertySequence
virtual int SendPropertySequence(const char *propertyName)=0
MM::Device::Shutdown
virtual int Shutdown()=0
-
MM::Galvo
Definition: MMDevice.h:1121
+
MM::Galvo
Definition: MMDevice.h:1118
MM::Galvo::GetXRange
virtual double GetXRange()=0
MM::Galvo::GetYRange
virtual double GetYRange()=0
MM::Galvo::GetYMinimum
virtual double GetYMinimum()=0
MM::Galvo::PointAndFire
virtual int PointAndFire(double x, double y, double time_us)=0
MM::Galvo::GetXMinimum
virtual double GetXMinimum()=0
-
MM::Generic
Definition: MMDevice.h:326
-
MM::Hub
Definition: MMDevice.h:1174
+
MM::Generic
Definition: MMDevice.h:323
+
MM::Hub
Definition: MMDevice.h:1171
MM::Hub::GetInstalledDevice
virtual Device * GetInstalledDevice(int devIdx)=0
MM::Hub::GetNumberOfInstalledDevices
virtual unsigned GetNumberOfInstalledDevices()=0
MM::Hub::ClearInstalledDevices
virtual void ClearInstalledDevices()=0
MM::Hub::DetectInstalledDevices
virtual int DetectInstalledDevices()=0
-
MM::ImageProcessor
Definition: MMDevice.h:853
-
MM::MMTime
Definition: MMDevice.h:90
-
MM::Magnifier
Definition: MMDevice.h:956
-
MM::SLM
Definition: MMDevice.h:973
+
MM::ImageProcessor
Definition: MMDevice.h:850
+
MM::MMTime
Definition: MMDevice.h:91
+
MM::Magnifier
Definition: MMDevice.h:953
+
MM::SLM
Definition: MMDevice.h:970
MM::SLM::StartSLMSequence
virtual int StartSLMSequence()=0
MM::SLM::SendSLMSequence
virtual int SendSLMSequence()=0
MM::SLM::GetSLMSequenceMaxLength
virtual int GetSLMSequenceMaxLength(long &nrEvents) const =0
@@ -949,10 +936,10 @@
MM::SLM::AddToSLMSequence
virtual int AddToSLMSequence(const unsigned int *const pixels)=0
MM::SLM::ClearSLMSequence
virtual int ClearSLMSequence()=0
MM::SLM::GetWidth
virtual unsigned GetWidth()=0
-
MM::Serial
Definition: MMDevice.h:805
-
MM::Shutter
Definition: MMDevice.h:570
+
MM::Serial
Definition: MMDevice.h:802
+
MM::Shutter
Definition: MMDevice.h:567
MM::Shutter::Fire
virtual int Fire(double deltaT)=0
-
MM::SignalIO
Definition: MMDevice.h:872
+
MM::SignalIO
Definition: MMDevice.h:869
MM::SignalIO::StartDASequence
virtual int StartDASequence()=0
MM::SignalIO::SendDASequence
virtual int SendDASequence()=0
MM::SignalIO::StopDASequence
virtual int StopDASequence()=0
@@ -960,7 +947,7 @@
MM::SignalIO::IsDASequenceable
virtual int IsDASequenceable(bool &isSequenceable) const =0
MM::SignalIO::GetDASequenceMaxLength
virtual int GetDASequenceMaxLength(long &nrEvents) const =0
MM::SignalIO::AddToDASequence
virtual int AddToDASequence(double voltage)=0
-
MM::Stage
Definition: MMDevice.h:593
+
MM::Stage
Definition: MMDevice.h:590
MM::Stage::IsStageLinearSequenceable
virtual int IsStageLinearSequenceable(bool &isSequenceable) const =0
MM::Stage::SendStageSequence
virtual int SendStageSequence()=0
MM::Stage::SetStageLinearSequence
virtual int SetStageLinearSequence(double dZ_um, long nSlices)=0
@@ -968,9 +955,9 @@
MM::Stage::GetFocusDirection
virtual int GetFocusDirection(FocusDirection &direction)=0
Return the focus direction.
MM::Stage::AddToStageSequence
virtual int AddToStageSequence(double position)=0
MM::Stage::IsStageSequenceable
virtual int IsStageSequenceable(bool &isSequenceable) const =0
-
MM::State
Definition: MMDevice.h:779
-
MM::TimeoutMs
Definition: MMDevice.h:195
-
MM::XYStage
Definition: MMDevice.h:693
+
MM::State
Definition: MMDevice.h:776
+
MM::TimeoutMs
Definition: MMDevice.h:196
+
MM::XYStage
Definition: MMDevice.h:690
MM::XYStage::ClearXYStageSequence
virtual int ClearXYStageSequence()=0
MM::XYStage::SetYOrigin
virtual int SetYOrigin()=0
MM::XYStage::SetXOrigin
virtual int SetXOrigin()=0
diff --git a/_module_interface_8h_source.html b/_module_interface_8h_source.html index 2ce1387..aff1d35 100644 --- a/_module_interface_8h_source.html +++ b/_module_interface_8h_source.html @@ -141,7 +141,7 @@
136 void RegisterDevice(const char* deviceName, MM::DeviceType deviceType, const char* description);
137 
138 #endif // MMDEVICE_CLIENT_BUILD
-
MM::Device
Definition: MMDevice.h:224
+
MM::Device
Definition: MMDevice.h:225