diff --git a/Modules/US/USFilters/mitkUSDevice.h b/Modules/US/USFilters/mitkUSDevice.h new file mode 100644 index 0000000000..18b1fe98d6 --- /dev/null +++ b/Modules/US/USFilters/mitkUSDevice.h @@ -0,0 +1,100 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision$ + +Copyright (c) German Cancer Research Center, Division of Medical and +Biological Informatics. All rights reserved. +See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + + +#ifndef MITKUSDevice_H_HEADER_INCLUDED_ +#define MITKUSDevice_H_HEADER_INCLUDED_ + +#include +#include "mitkUSProbe.h" +#include "mitkUSImageMetadata.h" +#include +#include +#include +#include + + +namespace mitk { + + /**Documentation + * \brief A device holds information about it's model, make and the connected probes. It is the + * common superclass for all Devices and acts as an image source for mitk Images as well as openCV Images. + * if one of these functionalities is not supported by a subclass, it will throw an unsupported Operation Exception. + * \ingroup US + */ + class MitkUS_EXPORT USDevice : public itk::Object + { + public: + mitkClassMacro(USDevice, mitk::ImageSource); + mitkNewMacro3Param(Self, std::string, std::string, bool); + + /** + * \brief Add a probe to the device without connecting to it. + * This should usually be done before connecting to the probe + */ + virtual void AddProbe(mitk::USProbe::Pointer probe); + + /** + * \brief Connect to a probe and activate it. The probe should be added first. + * Usually, a VideoDevice will just add a probe it want's to connect to, + * but an SDK Device might require adding a probe first. + */ + virtual void ActivateProbe(mitk::USProbe::Pointer probe); + + /** + * \brief Deactivates the currently active probe. + */ + virtual void DeactivateProbe(); + + /** + * \brief Removes a probe from the ist of currently added probes. + */ + //virtual void removeProbe(mitk::USProbe::Pointer probe); + + std::vector GetConnectedProbes(); + + //########### GETTER & SETTER ##################// + + itkGetMacro(ActiveProbe, mitk::USProbe::Pointer); + std::string GetDeviceManufacturer(); + std::string GetDeviceModel(); + std::string GetDeviceComment(); + bool GetIsVideoOnly(); + + protected: + mitk::USProbe::Pointer m_ActiveProbe; + std::vector m_ConnectedProbes; + /** + * \brief This metadata set is privately used to imprint Images with Metadata later. + * At instantiation time, it only contains Information about the Device, + At scan time, it integrates this data with the probe information and imprints it on + the produced images. This field is intentionally hidden from outside interference. + */ + mitk::USImageMetadata::Pointer m_Metadata; + + + /** + * \brief Enforces minimal Metadata to be set. The isVideoOnly flag indicates that this class + * only handles a videostream and does not recieve Metadata from the physical device itself. + */ + USDevice(std::string manufacturer, std::string model, bool isVideoOnly); + virtual ~USDevice(); + + + }; +} // namespace mitk +#endif \ No newline at end of file diff --git a/Modules/US/USFilters/mitkUSProbe.h b/Modules/US/USFilters/mitkUSProbe.h new file mode 100644 index 0000000000..00f247703c --- /dev/null +++ b/Modules/US/USFilters/mitkUSProbe.h @@ -0,0 +1,63 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision$ + +Copyright (c) German Cancer Research Center, Division of Medical and +Biological Informatics. All rights reserved. +See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + + +#ifndef MITKUSProbe_H_HEADER_INCLUDED_ +#define MITKUSProbe_H_HEADER_INCLUDED_ + +#include +#include +#include +#include + +namespace mitk { + + /**Documentation + * \brief Right now, the US Probe is only a fancy name for a string. Later, it could handle probe specific parameters + * like the current frequency etc. It is able to compare itself to other probes for device managment thoiugh. + * Be sure to check the isEqualTo() method if you expand this class to see if it needs work. + * \ingroup US + */ + class MitkUS_EXPORT USProbe : public itk::Object + { + public: + mitkClassMacro(USProbe,itk::Object); + itkNewMacro(Self); + + /** + * \brief Compares this probe to another probe and returns true if they are equal in terms of name AND NAME ONLY + * be sure to sufficiently extend this method along with further capabilities probes + */ + bool IsEqualToProbe(mitk::USProbe::Pointer probe); + + + //## getter and setter ## + + itkGetMacro(Name, std::string); + itkSetMacro(Name, std::string); + + protected: + USProbe(); + virtual ~USProbe(); + + std::string m_Name; + + + + }; +} // namespace mitk +#endif \ No newline at end of file