diff --git a/Core/Code/IO/mitkCustomMimeType.h b/Core/Code/IO/mitkCustomMimeType.h index 46a6a25a2f..8ae8fdcdd9 100644 --- a/Core/Code/IO/mitkCustomMimeType.h +++ b/Core/Code/IO/mitkCustomMimeType.h @@ -1,74 +1,79 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKCUSTOMMIMETYPE_H #define MITKCUSTOMMIMETYPE_H #include #include #include #include namespace mitk { class MimeType; +/** + * @ingroup IO + * @ingroup MicroServices_Interfaces + * + */ class MITK_CORE_EXPORT CustomMimeType { public: CustomMimeType(); CustomMimeType(const std::string& name); CustomMimeType(const CustomMimeType& other); explicit CustomMimeType(const MimeType& other); virtual ~CustomMimeType(); CustomMimeType& operator=(const CustomMimeType& other); CustomMimeType& operator=(const MimeType& other); std::string GetName() const; std::string GetCategory() const; std::vector GetExtensions() const; std::string GetComment() const; virtual bool AppliesTo(const std::string& path) const; void SetName(const std::string& name); void SetCategory(const std::string& category); void SetExtension(const std::string& extension); void AddExtension(const std::string& extension); void SetComment(const std::string& comment); void Swap(CustomMimeType& r); virtual CustomMimeType* Clone() const; private: struct Impl; Impl* d; }; void swap(CustomMimeType& l, CustomMimeType& r); } MITK_DECLARE_SERVICE_INTERFACE(mitk::CustomMimeType, "org.mitk.CustomMimeType") #endif // MITKCUSTOMMIMETYPE_H diff --git a/Core/Code/IO/mitkIOAdapter.h b/Core/Code/IO/mitkIOAdapter.h index cbc3308696..19e3ff8c83 100644 --- a/Core/Code/IO/mitkIOAdapter.h +++ b/Core/Code/IO/mitkIOAdapter.h @@ -1,95 +1,99 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef __mitkIOAdapter_h #define __mitkIOAdapter_h #include "mitkBaseProcess.h" #include "itkObject.h" namespace mitk { -//##Documentation -//## @brief IOAdapterBase class is an abstract adapter class for IO process objects. -//## -//## @ingroup IO -//## @deprecatedSince{2014_10} Use mitk::IFileReader instead + +/** + * @brief IOAdapterBase class is an abstract adapter class for IO process objects. + * + * @ingroup IO + * @deprecatedSince{2014_10} Use mitk::IFileReader instead + */ class IOAdapterBase: public itk::Object { public: /** Standard typedefs. */ typedef IOAdapterBase Self; typedef itk::Object Superclass; typedef itk::SmartPointerPointer; typedef itk::SmartPointerConstPointer; /// Create an object and return a pointer to it as a mitk::BaseProcess. virtual itk::SmartPointer CreateIOProcessObject(const std::string filename, const std::string filePrefix, const std::string filePattern) = 0; virtual bool CanReadFile(const std::string filename, const std::string filePrefix, const std::string filePattern) = 0; protected: IOAdapterBase() {} ~IOAdapterBase() {} private: IOAdapterBase(const Self&); //purposely not implemented void operator=(const Self&); //purposely not implemented }; -//##Documentation -//## @brief IOAdapter class is an adapter class for instantiation of IO process objects. -//## Additional this interface defines the function CanReadFile(). -//## This interface allows the target (object) the access to the adaptee (IO process object). -//## @ingroup IO -//## @deprecatedSince{2014_10} Use mitk::IFileReader instead +/** + * @brief IOAdapter class is an adapter class for instantiation of IO process objects. + * Additional this interface defines the function CanReadFile(). + * This interface allows the target (object) the access to the adaptee (IO process object). + * + * @ingroup IO + * @deprecatedSince{2014_10} Use mitk::IFileReader instead + */ template class IOAdapter : public IOAdapterBase { public: /** Standard class typedefs. */ typedef IOAdapter Self; typedef itk::SmartPointer Pointer; /** Methods from mitk::BaseProcess. */ itkFactorylessNewMacro(Self); mitk::BaseProcess::Pointer CreateIOProcessObject(const std::string filename, const std::string filePrefix, const std::string filePattern) { typename T::Pointer ioProcessObject = T::New(); ioProcessObject->SetFileName(filename.c_str()); ioProcessObject->SetFilePrefix(filePrefix.c_str()); ioProcessObject->SetFilePattern(filePattern.c_str()); return ioProcessObject.GetPointer(); } virtual bool CanReadFile(const std::string filename, const std::string filePrefix, const std::string filePattern) { return T::CanReadFile(filename, filePrefix, filePattern); } protected: IOAdapter() {} ~IOAdapter() {} private: IOAdapter(const Self&); //purposely not implemented void operator=(const Self&); //purposely not implemented }; } // end namespace mitk #endif diff --git a/Core/Code/IO/mitkImageGenerator.h b/Core/Code/IO/mitkImageGenerator.h index 76dbc80e6d..df39fe9d65 100644 --- a/Core/Code/IO/mitkImageGenerator.h +++ b/Core/Code/IO/mitkImageGenerator.h @@ -1,193 +1,195 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef ImageGenerator_H_HEADER_INCLUDED #define ImageGenerator_H_HEADER_INCLUDED #include #include #include #include #include "mitkImageWriteAccessor.h" namespace mitk { -//##Documentation -//## @brief generator for synthetic MITK images -//## This is a helper class to generate synthetic MITK images (random or gradient). -//## @ingroup IO +/** + * @brief generator for synthetic MITK images + * This is a helper class to generate synthetic MITK images (random or gradient). + * + * @ingroup IO + */ class MITK_CORE_EXPORT ImageGenerator { public: - /*! - \brief Generates gradient image with the defined size and spacing - */ + /** + * \brief Generates gradient image with the defined size and spacing + */ template static mitk::Image::Pointer GenerateGradientImage(unsigned int dimX, unsigned int dimY, unsigned int dimZ, float spacingX = 1, float spacingY = 1, float spacingZ = 1) { typedef itk::Image< TPixelType, 3 > ImageType; typename ImageType::RegionType imageRegion; imageRegion.SetSize(0, dimX); imageRegion.SetSize(1, dimY); imageRegion.SetSize(2, dimZ); typename ImageType::SpacingType spacing; spacing[0] = spacingX; spacing[1] = spacingY; spacing[2] = spacingZ; mitk::Point3D origin; origin.Fill(0.0); itk::Matrix directionMatrix; directionMatrix.SetIdentity(); typename ImageType::Pointer image = ImageType::New(); image->SetSpacing( spacing ); image->SetOrigin( origin ); image->SetDirection( directionMatrix ); image->SetLargestPossibleRegion( imageRegion ); image->SetBufferedRegion( imageRegion ); image->SetRequestedRegion( imageRegion ); image->Allocate(); image->FillBuffer(0.0); typedef itk::ImageRegionIterator IteratorOutputType; IteratorOutputType it(image, imageRegion); it.GoToBegin(); TPixelType val = 0; while(!it.IsAtEnd()) { it.Set(val); val++; ++it; } mitk::Image::Pointer mitkImage = mitk::Image::New(); mitkImage->InitializeByItk( image.GetPointer() ); mitkImage->SetVolume( image->GetBufferPointer() ); return mitkImage; } /*! \brief Generates random image with the defined size and spacing */ template static mitk::Image::Pointer GenerateRandomImage(unsigned int dimX, unsigned int dimY, unsigned int dimZ = 1, unsigned int dimT = 1, mitk::ScalarType spacingX = 1, mitk::ScalarType spacingY = 1, mitk::ScalarType spacingZ = 1, const double randomMax = 1000.0f, const double randMin = 0.0f) { //set the data type according to the template mitk::PixelType type = MakeScalarPixelType(); //type.Initialize(typeid(TPixelType)); //initialize the MITK image with given dimenion and data type mitk::Image::Pointer output = mitk::Image::New(); unsigned int* dimensions = new unsigned int[4]; unsigned int numberOfDimensions = 0; unsigned int bufferSize = 0; //check which dimension is needed if(dimT <= 1) { if(dimZ <= 1) { //2D numberOfDimensions = 2; dimensions[0] = dimX; dimensions[1] = dimY; bufferSize = dimX*dimY; } else { //3D numberOfDimensions = 3; dimensions[0] = dimX; dimensions[1] = dimY; dimensions[2] = dimZ; bufferSize = dimX*dimY*dimZ; } } else { //4D numberOfDimensions = 4; dimensions[0] = dimX; dimensions[1] = dimY; dimensions[2] = dimZ; dimensions[3] = dimT; bufferSize = dimX*dimY*dimZ*dimT; } output->Initialize(type, numberOfDimensions, dimensions); mitk::Vector3D spacing; spacing[0] = spacingX; spacing[1] = spacingY; spacing[2] = spacingZ; output->SetSpacing(spacing); //get a pointer to the image buffer to write into TPixelType* imageBuffer = NULL; try { mitk::ImageWriteAccessor writeAccess( output ); imageBuffer = static_cast( writeAccess.GetData() ); } catch(...) { MITK_ERROR << "Write access not granted on mitk::Image."; } //initialize the random generator itk::Statistics::MersenneTwisterRandomVariateGenerator::Pointer randomGenerator = itk::Statistics::MersenneTwisterRandomVariateGenerator::New(); randomGenerator->Initialize(); //fill the buffer for each pixel/voxel for(unsigned int i = 0; i < bufferSize; i++) { // the comparison of the component type is sufficient enough since the mitk::PixelType type object is // created as SCALAR and hence does not need the comparison against type.GetPixelTypeId() == itk::ImageIOBase::SCALAR if(type.GetComponentType() == itk::ImageIOBase::INT) //call integer function { imageBuffer[i] = (TPixelType)randomGenerator->GetIntegerVariate((int)randomMax); //TODO random generator does not support integer values in a given range (e.g. from 5-10) //range is always [0, (int)randomMax] } else if((type.GetComponentType() == itk::ImageIOBase::DOUBLE) || (type.GetComponentType() == itk::ImageIOBase::FLOAT)) //call floating point function { imageBuffer[i] = (TPixelType)randomGenerator->GetUniformVariate(randMin,randomMax); } else if(type.GetComponentType() == itk::ImageIOBase::UCHAR) { //use the integer randomGenerator with mod 256 to generate unsigned char values imageBuffer[i] = (unsigned char) ((int)randomGenerator->GetIntegerVariate((int)randomMax)) % 256; } else { MITK_ERROR << "Datatype not supported yet."; //TODO call different methods for other datatypes } } return output; } }; } // namespace mitk #endif /* ImageGenerator_H_HEADER_INCLUDED */ diff --git a/Core/Code/IO/mitkMimeType.h b/Core/Code/IO/mitkMimeType.h index 299294a339..269fb1d543 100644 --- a/Core/Code/IO/mitkMimeType.h +++ b/Core/Code/IO/mitkMimeType.h @@ -1,80 +1,84 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKMIMETYPE_H #define MITKMIMETYPE_H #include #include #include #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable:4251) #endif namespace mitk { class CustomMimeType; +/** + * @ingroup IO + * + */ class MITK_CORE_EXPORT MimeType { public: MimeType(); MimeType(const MimeType& other); MimeType(const CustomMimeType& x, int rank, long id); ~MimeType(); MimeType& operator=(const MimeType& other); bool operator==(const MimeType& other) const; bool operator<(const MimeType& other) const; std::string GetName() const; std::string GetCategory() const; std::vector GetExtensions() const; std::string GetComment() const; bool AppliesTo(const std::string& path) const; bool IsValid() const; void Swap(MimeType& m); private: struct Impl; // Use C++11 shared_ptr instead us::SharedDataPointer m_Data; }; void swap(MimeType& m1, MimeType& m2); std::ostream& operator<<(std::ostream& os, const MimeType& mimeType); } #ifdef _MSC_VER #pragma warning(pop) #endif #endif // MITKMIMETYPE_H diff --git a/Core/Code/IO/mitkVtkLoggingAdapter.h b/Core/Code/IO/mitkVtkLoggingAdapter.h index 419cb74b24..e2281180c1 100644 --- a/Core/Code/IO/mitkVtkLoggingAdapter.h +++ b/Core/Code/IO/mitkVtkLoggingAdapter.h @@ -1,57 +1,59 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef VtkLoggingAdapter_H_HEADER_INCLUDED #define VtkLoggingAdapter_H_HEADER_INCLUDED #include #include #include namespace mitk { -//##Documentation -//## @brief Adapter that overwrites the standard vtk logging output window and sends the logging messages to the MITK logging instead. -//## @ingroup IO + +/** + * @brief Adapter that overwrites the standard vtk logging output window and sends the logging messages to the MITK logging instead. + * @ingroup IO + */ class MITK_CORE_EXPORT VtkLoggingAdapter : public vtkOutputWindow { public: static VtkLoggingAdapter* New(); /** @brief Initializes the logging adapter. Vtk logging * messages are redirected to MITK logging afterwards. */ static void Initialize(); virtual void DisplayText(const char* t); virtual void DisplayErrorText(const char *t); virtual void DisplayWarningText(const char *t); virtual void DisplayGenericWarningText(const char *t); virtual void DisplayDebugText(const char *t); protected: }; } // namespace mitk #endif /* VtkLoggingAdapter_H_HEADER_INCLUDED */ diff --git a/Core/Code/Interactions/mitkMouseMovePointSetInteractor.h b/Core/Code/Interactions/mitkMouseMovePointSetInteractor.h index 56b0cb2e31..0c061911a3 100644 --- a/Core/Code/Interactions/mitkMouseMovePointSetInteractor.h +++ b/Core/Code/Interactions/mitkMouseMovePointSetInteractor.h @@ -1,75 +1,75 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKMOUSEMOVEPOINTSETINTERACTOR_H_HEADER_INCLUDED_C11202FF #define MITKMOUSEMOVEPOINTSETINTERACTOR_H_HEADER_INCLUDED_C11202FF #include #include "mitkNumericTypes.h" #include namespace mitk { class DataNode; /** * \brief Interaction with a single point by mouse movement. * * A new point is added by mouse movement, an existing point will be removed before adding a new one. * \ingroup Interaction */ /** * \deprecatedSince{2014_03} mitk::MouseMovePointSetInteractor is deprecated. Needs to be updated to the new interaction-framework. - * Refer to \see DataInteractionPage for general information about the concept of the new implementation. + * Refer to \ref DataInteractionPage for general information about the concept of the new implementation. */ class MITK_CORE_EXPORT MouseMovePointSetInteractor : public PointSetInteractor { public: mitkClassMacro(MouseMovePointSetInteractor, Interactor); DEPRECATED() mitkNewMacro3Param(Self, const char*, DataNode*, int); DEPRECATED() mitkNewMacro2Param(Self, const char*, DataNode*); /** * \brief calculates how good the data, this statemachine handles, is hit * by the event. * * overwritten, cause we don't look at the boundingbox, we look at each point * and want to accept mouse movement for setting points */ virtual float CanHandleEvent(StateEvent const* stateEvent) const; protected: /** * \brief Constructor with Param n for limited Set of Points * * if no n is set, then the number of points is unlimited* */ MouseMovePointSetInteractor(const char * type, DataNode* dataNode, int n = -1); /** * \brief Default Destructor **/ virtual ~MouseMovePointSetInteractor(); private: }; } #endif /* MITKMOUSEMOVEPOINTSETINTERACTOR_H_HEADER_INCLUDED_C11202FF */ diff --git a/Core/Code/Interfaces/mitkIFileReader.h b/Core/Code/Interfaces/mitkIFileReader.h index f3d85f371a..880503f558 100644 --- a/Core/Code/Interfaces/mitkIFileReader.h +++ b/Core/Code/Interfaces/mitkIFileReader.h @@ -1,100 +1,101 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef IFileReader_H_HEADER_INCLUDED_C1E7E521 #define IFileReader_H_HEADER_INCLUDED_C1E7E521 #include #include #include namespace mitk { class BaseData; } namespace itk { template class SmartPointer; } namespace mitk { /** * \brief The common interface for all MITK file readers. * \ingroup IO + * \ingroup MicroServices_Interfaces * * Implementations of this interface must be registered as a service * to make themselve available via the service registry. If the * implementation is state-full, the service should be registered using * a PrototypeServiceFactory. * * The file reader implementation is associated with a mime-type, specified * in the service property PROP_MIMETYPE(). The specified mime-type should * have a corresponding CustomMimeType service object, registered by the reader * or some other party. * * It is recommended to derive new implementations from AbstractFileReader or * from AbstractFileIO (if both reader and writer is implemented), * which provide correct service registration semantics. * * \sa AbstractFileReader * \sa AbstractFileIO * \sa CustomMimeType * \sa FileReaderRegistry * \sa IFileWriter */ struct MITK_CORE_EXPORT IFileReader : public IFileIO { virtual ~IFileReader(); /** * \brief Set the input file name. * \param location The file name to read from. */ virtual void SetInput(const std::string& location) = 0; virtual void SetInput(const std::string &location, std::istream* is) = 0; virtual std::string GetInputLocation() const = 0; virtual std::istream* GetInputStream() const = 0; /** * \brief Reads the specified file or input stream and returns its contents. * * \return A list of created BaseData objects. * \throws mitk::Exception */ virtual std::vector > Read() = 0; /** * \brief Reads the specified file or input stream, loading its * contents into the provided DataStorage. * * \param ds The DataStorage to which the data is added. * \return The set of added DataNodes to \c ds. * \throws mitk::Exception */ virtual DataStorage::SetOfObjects::Pointer Read(mitk::DataStorage& ds) = 0; }; } // namespace mitk MITK_DECLARE_SERVICE_INTERFACE(mitk::IFileReader, "org.mitk.IFileReader") #endif /* IFileReader_H_HEADER_INCLUDED_C1E7E521 */ diff --git a/Core/Code/Interfaces/mitkIFileWriter.h b/Core/Code/Interfaces/mitkIFileWriter.h index d155441686..fa65ac5c9b 100644 --- a/Core/Code/Interfaces/mitkIFileWriter.h +++ b/Core/Code/Interfaces/mitkIFileWriter.h @@ -1,85 +1,88 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef IFileWriter_H_HEADER_INCLUDED_C1E7E521 #define IFileWriter_H_HEADER_INCLUDED_C1E7E521 #include #include namespace mitk { class BaseData; } namespace mitk { /** + * \ingroup IO + * \ingroup MicroServices_Interfaces + * * \brief The common interface of all MITK file writers. * * Implementations of this interface must be registered as a service * to make themselve available via the service registry. If the * implementation is state-full, the service should be registered using * a PrototypeServiceFactory. * * The file writer implementation is associated with a mime-type, specified * in the service property PROP_MIMETYPE() and a mitk::BaseData sub-class * as specified in the PROP_BASEDATA_TYPE() service property. * The specified mime-type should have a corresponding CustomMimeType service * object, registered by the reader or some other party. * * It is recommended to derive new implementations from AbstractFileWriter or * AbstractFileIO (if both reader and writer is implemented), * which provide correct service registration semantics. * * \sa AbstractFileWriter * \sa AbstractFileIO * \sa CustomMimeType * \sa FileWriterRegistry * \sa IFileReader */ struct MITK_CORE_EXPORT IFileWriter : public IFileIO { virtual ~IFileWriter(); virtual void SetInput(const BaseData* data) = 0; virtual const BaseData* GetInput() const = 0; virtual void SetOutputLocation(const std::string& location) = 0; virtual std::string GetOutputLocation() const = 0; virtual void SetOutputStream(const std::string& location, std::ostream* os) = 0; virtual std::ostream* GetOutputStream() const = 0; virtual void Write() = 0; /** * @brief Service property name for the supported mitk::BaseData sub-class * * The property value must be of type \c std::string. * * @return The property name. */ static std::string PROP_BASEDATA_TYPE(); }; } // namespace mitk MITK_DECLARE_SERVICE_INTERFACE(mitk::IFileWriter, "org.mitk.IFileWriter") #endif /* IFileWriter_H_HEADER_INCLUDED_C1E7E521 */ diff --git a/Core/Code/Interfaces/mitkIMimeTypeProvider.h b/Core/Code/Interfaces/mitkIMimeTypeProvider.h index c8afe752ce..9d637257fb 100644 --- a/Core/Code/Interfaces/mitkIMimeTypeProvider.h +++ b/Core/Code/Interfaces/mitkIMimeTypeProvider.h @@ -1,71 +1,74 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKIMIMETYPEPROVIDER_H #define MITKIMIMETYPEPROVIDER_H #include #include #include #include #include namespace mitk { /** + * @ingroupg IO + * @ingroup MicroServices_Interfaces + * * @brief The IMimeTypeProvider service interface allows to query all registered * mime types. * * Mime types are added to the system by registering a service object of type * CustomMimeType and the registered mime types can be queried bei either using direct * look-ups in the service registry or calling the methods of this service interface. * * This service interface also allows to infer the mime type of a file on the file * system. The heuristics for infering the actual mime type is implementation specific. * * @note This is a core service * * @sa CustomMimeType * @sa CoreServices::GetMimeTypeProvider() */ struct MITK_CORE_EXPORT IMimeTypeProvider { virtual ~IMimeTypeProvider(); virtual std::vector GetMimeTypes() const = 0; virtual std::vector GetMimeTypesForFile(const std::string& filePath) const = 0; virtual std::vector GetMimeTypesForCategory(const std::string& category) const = 0; virtual MimeType GetMimeTypeForName(const std::string& name) const = 0; /** * @brief Get a sorted and unique list of mime-type categories. * @return A sorted, unique list of mime-type categories. */ virtual std::vector GetCategories() const = 0; }; } MITK_DECLARE_SERVICE_INTERFACE(mitk::IMimeTypeProvider, "org.mitk.IMimeTypeProvider") #endif // MITKIMIMETYPEPROVIDER_H diff --git a/Core/Code/Interfaces/mitkIPersistenceService.h b/Core/Code/Interfaces/mitkIPersistenceService.h index ea7da5fbd4..ca49f67503 100644 --- a/Core/Code/Interfaces/mitkIPersistenceService.h +++ b/Core/Code/Interfaces/mitkIPersistenceService.h @@ -1,339 +1,341 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef mitkIPersistenceService_h #define mitkIPersistenceService_h // mitk #include "mitkPropertyListReplacedObserver.h" #include "usServiceReference.h" #include "usModuleContext.h" #include "usGetModuleContext.h" //for microservices #include #include "mitkDataStorage.h" namespace mitk { /** - * The central service for the persistence module - * Basic idea is to create PropertyLists with a unique id using AddPropertyList(). A consumer - * of this interface can write arbitrary information into this propertylist - * Calling Save() and Load() will cause the Service to save and load the current set of propertlists from - * a file in the user directory. - * Using SetAutoLoadAndSave(true) will cause the service to load/save the property lists at application - * start/stop. - * Moreover, depending on the backend type, the service is connected to the SceneSerialization module, i.e. - * the user will be asked whether to save/load the propertlists in/from the current ".mitk" file that is selected - * by the user. - */ + * \ingroup MicroServices_Interfaces + * + * The central service for the persistence module + * Basic idea is to create PropertyLists with a unique id using AddPropertyList(). A consumer + * of this interface can write arbitrary information into this propertylist + * Calling Save() and Load() will cause the Service to save and load the current set of propertlists from + * a file in the user directory. + * Using SetAutoLoadAndSave(true) will cause the service to load/save the property lists at application + * start/stop. + * Moreover, depending on the backend type, the service is connected to the SceneSerialization module, i.e. + * the user will be asked whether to save/load the propertlists in/from the current ".mitk" file that is selected + * by the user. + */ class MITK_CORE_EXPORT IPersistenceService { public: /** * If PropertyList with the given id exists, returns it. Otherwise creates a new one and returns it. * If id is empty a UUID will be created and set on the variable * If existed was passed, it is true if the PropertyList with that id existed, false otherwise * \return a valid PropertyList with a StringProperty "Id" containing the passed id */ virtual mitk::PropertyList::Pointer GetPropertyList( std::string& id, bool* existed=0 ) = 0; /** * removes the PropertyList with the given id * \return true if PropertyList existed and could be removed, false otherwise */ virtual bool RemovePropertyList( std::string& id ) = 0; /** * Get the default name of the PersistenceFile (the one that is loaded at startup) */ virtual std::string GetDefaultPersistenceFile() = 0; /** * \return The name of the Bool Property that specifies whether a DataNode is a Node carrying Persistence PropertyLists */ virtual std::string GetPersistenceNodePropertyName() = 0; /** * Creates a vector of DataNodes that contain all PropertyLists. Additionally, the DataNodes * will have the property name set to the PropertyList's id and a BoolProperty equal to GetPersistenceNodePropertyName() set to true. If ds is set the returned DataNodes will also be added to that DS. * \return vector of DataNodes with the described attributes */ virtual DataStorage::SetOfObjects::Pointer GetDataNodes(DataStorage* ds=0) = 0; /** * Searches storage for persistent DataNodes, extracts and inserts the appended property lists to this service * \return true if at least one node was found from which a PropertyList could be restored */ virtual bool RestorePropertyListsFromPersistentDataNodes(const DataStorage* storage) = 0; /** * Save the current PropertyLists to fileName. If fileName is empty, a special file in the users home directory will be used. * if appendchanges is true, the file will not replaced but first loaded, then overwritten and then replaced * \return false if an error occured (cannot write to file), true otherwise */ virtual bool Save(const std::string& fileName="", bool appendChanges=false) = 0; /** * Load PropertyLists from fileName. If fileName is empty, a special file in the users home directory will be used. * If enforeReload is false, the service will take care of modified time flags, i.e. it will not load a file * that was loaded before and did not change in the meantime or that was modified by the service itself * *ATTENTION*: If there are PropertyLists with the same id contained in the file, existing PropertyLists will be overwritten! * \see AddPropertyListReplacedObserver() * \return false if an error occured (cannot load from file), true otherwise */ virtual bool Load(const std::string& fileName="", bool enforeReload=true) = 0; /** * Using SetAutoLoadAndSave(true) will cause the service to load/save the property lists at application * start/stop. */ virtual void SetAutoLoadAndSave(bool autoLoadAndSave) = 0; /** * \return whether AutoLoading is activated or not */ virtual bool GetAutoLoadAndSave() = 0; /** * adds a observer which is informed if a propertyList gets replaced during a Load() procedure */ virtual void AddPropertyListReplacedObserver( PropertyListReplacedObserver* observer ) = 0; /** * removes a specific observer */ virtual void RemovePropertyListReplacedObserver( PropertyListReplacedObserver* observer ) = 0; /** * nothing to do here */ virtual ~IPersistenceService(); }; } // MACROS FOR AUTOMATIC SAVE FUNCTION #define PERSISTENCE_GET_MODULE_CONTEXT_FUNCTION\ us::GetModuleContext() #define PERSISTENCE_GET_SERVICE_MACRO\ mitk::IPersistenceService* persistenceService = 0;\ us::ModuleContext* context = PERSISTENCE_GET_MODULE_CONTEXT_FUNCTION;\ if( context )\ {\ us::ServiceReference persistenceServiceRef = context->GetServiceReference();\ if( persistenceServiceRef )\ {\ persistenceService\ = dynamic_cast ( context->GetService(persistenceServiceRef) );\ }\ } #define PERSISTENCE_GET_SERVICE_METHOD_MACRO\ mitk::IPersistenceService* GetPeristenceService() const\ {\ PERSISTENCE_GET_SERVICE_MACRO\ return persistenceService;\ } #define PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ public:\ bool Save(const std::string& fileName="", bool appendChanges=false)\ {\ mitk::IPersistenceService* persistenceService = this->GetPeristenceService();\ bool noError = persistenceService != 0;\ if( noError )\ this->ToPropertyList();\ if(noError)\ noError = persistenceService->Save(fileName, appendChanges);\ return noError;\ }\ bool Load(const std::string& fileName="", bool enforeReload=true)\ {\ mitk::IPersistenceService* persistenceService = this->GetPeristenceService();\ bool noError = persistenceService != 0 && persistenceService->Load(fileName, enforeReload);\ if( noError )\ {\ this->FromPropertyList();\ }\ return noError;\ }\ void ToPropertyList()\ {\ mitk::IPersistenceService* persistenceService = this->GetPeristenceService();\ this->InitializePropertyListReplacedObserver(persistenceService);\ if( !persistenceService )\ return;\ mitk::PropertyList::Pointer propList = persistenceService->GetPropertyList(ID_MEMBER_NAME); #define PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ }\ void FromPropertyList()\ {\ mitk::IPersistenceService* persistenceService = this->GetPeristenceService();\ this->InitializePropertyListReplacedObserver(persistenceService);\ if( !persistenceService )\ return;\ mitk::PropertyList::Pointer propList = persistenceService->GetPropertyList(ID_MEMBER_NAME); #define PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME)\ }\ std::string GetId() const\ {\ return ID_MEMBER_NAME;\ }\ private:\ PERSISTENCE_GET_SERVICE_METHOD_MACRO\ struct MyPropertyListReplacedObserver: public mitk::PropertyListReplacedObserver\ {\ MyPropertyListReplacedObserver()\ : m_##THE_CLASS_NAME(0), m_PersistenceService(0)\ {\ }\ ~MyPropertyListReplacedObserver()\ {\ if( m_PersistenceService )\ m_PersistenceService->RemovePropertyListReplacedObserver(this);\ }\ void AfterPropertyListReplaced( const std::string& id, mitk::PropertyList* propertyList )\ {\ if( m_##THE_CLASS_NAME && m_##THE_CLASS_NAME->GetId() == id )\ m_##THE_CLASS_NAME->FromPropertyList();\ }\ void Initialize( THE_CLASS_NAME * _##THE_CLASS_NAME, mitk::IPersistenceService* persistenceService )\ {\ m_##THE_CLASS_NAME = _##THE_CLASS_NAME;\ m_PersistenceService = persistenceService;\ if( m_PersistenceService )\ m_PersistenceService->AddPropertyListReplacedObserver(this);\ }\ private:\ THE_CLASS_NAME * m_##THE_CLASS_NAME;\ mitk::IPersistenceService* m_PersistenceService;\ };\ MyPropertyListReplacedObserver m_MyPropertyListReplacedObserver;\ void InitializePropertyListReplacedObserver(mitk::IPersistenceService* persistenceService)\ {\ static bool observerInitialized = false;\ if( observerInitialized == false && persistenceService )\ {\ m_MyPropertyListReplacedObserver.Initialize( this, persistenceService );\ observerInitialized = true;\ }\ } #define PERSISTENCE_CREATE(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) #define PERSISTENCE_CREATE2(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME, PARAM2_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Set( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Get( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) #define PERSISTENCE_CREATE3(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME, PARAM2_MEMBER_NAME, PARAM3_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Set( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Set( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Get( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Get( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) #define PERSISTENCE_CREATE4(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME, PARAM2_MEMBER_NAME, PARAM3_MEMBER_NAME, PARAM4_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Set( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Set( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Set( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Get( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Get( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Get( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) #define PERSISTENCE_CREATE5(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME, PARAM2_MEMBER_NAME, PARAM3_MEMBER_NAME, PARAM4_MEMBER_NAME, PARAM5_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Set( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Set( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Set( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Set( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Get( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Get( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Get( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Get( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) #define PERSISTENCE_CREATE6(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME, PARAM2_MEMBER_NAME, PARAM3_MEMBER_NAME, PARAM4_MEMBER_NAME, PARAM5_MEMBER_NAME, PARAM6_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Set( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Set( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Set( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Set( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ propList->Set( #PARAM6_MEMBER_NAME, PARAM6_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Get( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Get( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Get( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Get( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ propList->Get( #PARAM6_MEMBER_NAME, PARAM6_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) #define PERSISTENCE_CREATE7(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME, PARAM2_MEMBER_NAME, PARAM3_MEMBER_NAME, PARAM4_MEMBER_NAME, PARAM5_MEMBER_NAME, PARAM6_MEMBER_NAME, PARAM7_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Set( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Set( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Set( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Set( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ propList->Set( #PARAM6_MEMBER_NAME, PARAM6_MEMBER_NAME );\ propList->Set( #PARAM7_MEMBER_NAME, PARAM7_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Get( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Get( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Get( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Get( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ propList->Get( #PARAM6_MEMBER_NAME, PARAM6_MEMBER_NAME );\ propList->Get( #PARAM7_MEMBER_NAME, PARAM7_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) #define PERSISTENCE_CREATE8(THE_CLASS_NAME, ID_MEMBER_NAME, PARAM_MEMBER_NAME, PARAM2_MEMBER_NAME, PARAM3_MEMBER_NAME, PARAM4_MEMBER_NAME, PARAM5_MEMBER_NAME, PARAM6_MEMBER_NAME, PARAM7_MEMBER_NAME, PARAM8_MEMBER_NAME)\ PERSISTENCE_MACRO_START_PART(ID_MEMBER_NAME)\ propList->Set( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Set( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Set( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Set( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Set( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ propList->Set( #PARAM6_MEMBER_NAME, PARAM6_MEMBER_NAME );\ propList->Set( #PARAM7_MEMBER_NAME, PARAM7_MEMBER_NAME );\ propList->Set( #PARAM8_MEMBER_NAME, PARAM8_MEMBER_NAME );\ PERSISTENCE_MACRO_MIDDLE_PART(ID_MEMBER_NAME)\ propList->Get( #PARAM_MEMBER_NAME, PARAM_MEMBER_NAME );\ propList->Get( #PARAM2_MEMBER_NAME, PARAM2_MEMBER_NAME );\ propList->Get( #PARAM3_MEMBER_NAME, PARAM3_MEMBER_NAME );\ propList->Get( #PARAM4_MEMBER_NAME, PARAM4_MEMBER_NAME );\ propList->Get( #PARAM5_MEMBER_NAME, PARAM5_MEMBER_NAME );\ propList->Get( #PARAM6_MEMBER_NAME, PARAM6_MEMBER_NAME );\ propList->Get( #PARAM7_MEMBER_NAME, PARAM7_MEMBER_NAME );\ propList->Get( #PARAM8_MEMBER_NAME, PARAM8_MEMBER_NAME );\ PERSISTENCE_MACRO_END_PART(THE_CLASS_NAME, ID_MEMBER_NAME) MITK_DECLARE_SERVICE_INTERFACE(mitk::IPersistenceService, "org.mitk.services.IPersistenceService") #endif diff --git a/Core/Code/Interfaces/mitkIPropertyAliases.h b/Core/Code/Interfaces/mitkIPropertyAliases.h index 0fe9b4118b..766fd1ef91 100644 --- a/Core/Code/Interfaces/mitkIPropertyAliases.h +++ b/Core/Code/Interfaces/mitkIPropertyAliases.h @@ -1,96 +1,98 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef mitkIPropertyAliases_h #define mitkIPropertyAliases_h #include #include #include #include namespace mitk { - /** \brief Interface of property aliases service. - * - * This service allows you to manage aliases of property names. - * A property name can be mapped to more than one alias and aliases can be restricted to specific data node types. - * The property view prefers to display aliases instead of genuine property names. - */ + /** + * \ingroup MicroServices_Interfaces + * \brief Interface of property aliases service. + * + * This service allows you to manage aliases of property names. + * A property name can be mapped to more than one alias and aliases can be restricted to specific data node types. + * The property view prefers to display aliases instead of genuine property names. + */ class MITK_CORE_EXPORT IPropertyAliases { public: virtual ~IPropertyAliases(); /** \brief Add an alias for a specific property. * * \param[in] propertyName Name of the property. * \param[in] alias Alias for the property. * \param[in] className Optional data node class name to which this alias is restricted. * \return False if alias is an empty string. */ virtual bool AddAlias(const std::string& propertyName, const std::string& alias, const std::string& className = "") = 0; /** \brief Get aliases for a specific property. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which the returned aliases are restricted. * \return Aliases that match the input criteria. */ virtual std::vector GetAliases(const std::string& propertyName, const std::string& className = "") = 0; /** \brief Get property name that is associated to specific alias. * * \param[in] alias Alias of the property. * \param[in] className Optional data node class name to which the alias is restricted. * \return Associated property name or empty string if no property name was found. */ virtual std::string GetPropertyName(const std::string& alias, const std::string& className = "") = 0; /** \brief Check if a specific property has aliases. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which the aliases are restricted. * \return True if the property has aliases, false otherwise. */ virtual bool HasAliases(const std::string& propertyName, const std::string& className = "") = 0; /** \brief Remove specific alias of a certain property. * * \param[in] propertyName Name of the property. * \param[in] alias Alias of the property. * \param[in] className Optional data node class name to which the alias is restricted. */ virtual void RemoveAlias(const std::string& propertyName, const std::string& alias, const std::string& className = "") = 0; /** \brief Remove all aliases of a specific property. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which the aliases are restricted. */ virtual void RemoveAliases(const std::string& propertyName, const std::string& className = "") = 0; /** \brief Remove all aliases of all properties. * * \param[in] className Optional data node class name to which the removal is restricted. */ virtual void RemoveAllAliases(const std::string& className = "") = 0; }; } MITK_DECLARE_SERVICE_INTERFACE(mitk::IPropertyAliases, "org.mitk.IPropertyAliases") #endif diff --git a/Core/Code/Interfaces/mitkIPropertyDescriptions.h b/Core/Code/Interfaces/mitkIPropertyDescriptions.h index 9f18057678..09d1b42136 100644 --- a/Core/Code/Interfaces/mitkIPropertyDescriptions.h +++ b/Core/Code/Interfaces/mitkIPropertyDescriptions.h @@ -1,79 +1,81 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef mitkIPropertyDescriptions_h #define mitkIPropertyDescriptions_h #include #include #include namespace mitk { - /** \brief Interface of property descriptions service. - * - * This service allows you to manage descriptions for properties. - * The property view displays descriptions of selected properties (in rich text format) at its bottom. - */ + /** + * \ingroup MicroServices_Interfaces + * \brief Interface of property descriptions service. + * + * This service allows you to manage descriptions for properties. + * The property view displays descriptions of selected properties (in rich text format) at its bottom. + */ class MITK_CORE_EXPORT IPropertyDescriptions { public: virtual ~IPropertyDescriptions(); /** \brief Add a description for a specific property. * * \param[in] propertyName Name of the property. * \param[in] description Description of the property. * \param[in] className Optional data node class name to which this description is restricted. * \param[in] overwrite Overwrite already existing description. * \return True if description was added successfully. */ virtual bool AddDescription(const std::string& propertyName, const std::string& description, const std::string& className = "", bool overwrite = false) = 0; /** \brief Get the description for a specific property. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which the returned description is restricted. * \return Property description or empty string if no description is available. */ virtual std::string GetDescription(const std::string& propertyName, const std::string& className = "") = 0; /** \brief Check if a specific property has a description. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which this description is restricted. * \return True if the property has a description, false otherwise. */ virtual bool HasDescription(const std::string& propertyName, const std::string& className = "") = 0; /** \brief Remove all descriptions. * * \param[in] className Optional data node class name to which this description is restricted. */ virtual void RemoveAllDescriptions(const std::string& className = "") = 0; /** \brief Remove description of specific property. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which this description is restricted. */ virtual void RemoveDescription(const std::string& propertyName, const std::string& className = "") = 0; }; } MITK_DECLARE_SERVICE_INTERFACE(mitk::IPropertyDescriptions, "org.mitk.IPropertyDescriptions") #endif diff --git a/Core/Code/Interfaces/mitkIPropertyExtensions.h b/Core/Code/Interfaces/mitkIPropertyExtensions.h index d180af5251..6b71d0df52 100644 --- a/Core/Code/Interfaces/mitkIPropertyExtensions.h +++ b/Core/Code/Interfaces/mitkIPropertyExtensions.h @@ -1,82 +1,84 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef mitkIPropertyExtensions_h #define mitkIPropertyExtensions_h #include #include #include #include namespace mitk { - /** \brief Interface of property extensions service. - * - * This service allows you to manage extensions for properties. - * An extension is a class that derives from mitk::PropertyExtension. - * Use extensions to attach useful metadata to your properties, e.g. the allowed range of values. - * Note that you have to extend the property view if you want it to respect your custom metadata. - */ + /** + * \ingroup MicroServices_Interfaces + * \brief Interface of property extensions service. + * + * This service allows you to manage extensions for properties. + * An extension is a class that derives from mitk::PropertyExtension. + * Use extensions to attach useful metadata to your properties, e.g. the allowed range of values. + * Note that you have to extend the property view if you want it to respect your custom metadata. + */ class MITK_CORE_EXPORT IPropertyExtensions { public: virtual ~IPropertyExtensions(); /** \brief Add an extension to a specific property. * * \param[in] propertyName Name of the property. * \param[in] extension Property extension. * \param[in] className Optional data node class name to which the property extension is restricted. * \param[in] overwrite Overwrite already existing property extension. * \return True if extension was added successfully. */ virtual bool AddExtension(const std::string& propertyName, PropertyExtension::Pointer extension, const std::string& className = "", bool overwrite = false) = 0; /** \brief Get the extension of a specific property. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which the returned property extension is restricted. * \return Property extension or null pointer if no extension was found. */ virtual PropertyExtension::Pointer GetExtension(const std::string& propertyName, const std::string& className = "") = 0; /** \brief Check if a specific property has an extension. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which the property extension is restricted. * \return True if the property has an extension, false otherwise. */ virtual bool HasExtension(const std::string& propertyName, const std::string& className = "") = 0; /** \brief Remove all property extensions. * * \param[in] className Optional data node class name to which the property extension is restricted. */ virtual void RemoveAllExtensions(const std::string& className = "") = 0; /** \brief Remove extension of a specific property. * * \param[in] propertyName Name of the property. * \param[in] className Optional data node class name to which the property extension is restricted. */ virtual void RemoveExtension(const std::string& propertyName, const std::string& className = "") = 0; }; } MITK_DECLARE_SERVICE_INTERFACE(mitk::IPropertyExtensions, "org.mitk.IPropertyExtensions") #endif diff --git a/Core/Code/Interfaces/mitkIPropertyFilters.h b/Core/Code/Interfaces/mitkIPropertyFilters.h index d5bbe5ca0d..92d104462f 100644 --- a/Core/Code/Interfaces/mitkIPropertyFilters.h +++ b/Core/Code/Interfaces/mitkIPropertyFilters.h @@ -1,86 +1,88 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef mitkIPropertyFilters_h #define mitkIPropertyFilters_h #include #include #include #include #include namespace mitk { class PropertyFilter; - /** \brief Interface of property filters service. - * - * This service allows you manage property name filters. - * A mitk::PropertyFilter consist of blacklist and whitelist entries and can be restricted to certain data node types. - * The property view only displays filtered properties if filters were found. - */ + /** + * \ingroup MicroServices_Interfaces + * \brief Interface of property filters service. + * + * This service allows you manage property name filters. + * A mitk::PropertyFilter consist of blacklist and whitelist entries and can be restricted to certain data node types. + * The property view only displays filtered properties if filters were found. + */ class MITK_CORE_EXPORT IPropertyFilters { public: virtual ~IPropertyFilters(); /** \brief Add a property filter. * * \param[in] filter The property filter. * \param[in] className Optional data node class name to which the filter is restricted. * \param[in] overwrite Overwrite already existing filter. * \return True if filter was added auccessfully. */ virtual bool AddFilter(const PropertyFilter& filter, const std::string& className = "", bool overwrite = false) = 0; /** \brief Apply property filter to property list. * * \param[in] propertyMap Property list to which the filter is applied. * \param[in] className Optional data node class name for which the filter is chosen. * \return Filtered property list. */ virtual std::map ApplyFilter(const std::map& propertyMap, const std::string& className = "") const = 0; /** \brief Get the current property filter. * * \param[in] className Optional data node class name for which the filter is returned. * \return The current property filter. */ virtual PropertyFilter GetFilter(const std::string& className = "") const = 0; /** \brief Check if a specific data node class name has a property filter. * * \param[in] className The data node class name or empty string for global property filter. * \return True if data node class name has a filter, false otherwise. */ virtual bool HasFilter(const std::string& className = "") const = 0; /** \brief Remove all property filters. */ virtual void RemoveAllFilters() = 0; /** \brief Remove property filter for a specific data node class name. * * \param[in] className The data node class name or empty string for global property filter. */ virtual void RemoveFilter(const std::string& className = "") = 0; }; } MITK_DECLARE_SERVICE_INTERFACE(mitk::IPropertyFilters, "org.mitk.IPropertyFilters") #endif diff --git a/Core/Code/Interfaces/mitkIShaderRepository.h b/Core/Code/Interfaces/mitkIShaderRepository.h index 14bbd83fae..87a7b11e32 100644 --- a/Core/Code/Interfaces/mitkIShaderRepository.h +++ b/Core/Code/Interfaces/mitkIShaderRepository.h @@ -1,144 +1,145 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKISHADERREPOSITORY_H #define MITKISHADERREPOSITORY_H #include #include "mitkCommon.h" #include "mitkServiceInterface.h" #include class vtkActor; class vtkShaderProgram2; namespace mitk { class DataNode; class BaseRenderer; /** + * \ingroup MicroServices_Interfaces * \brief Management class for vtkShader XML descriptions. * * Loads XML shader files from std::istream objects and adds default properties * for each shader object (shader uniforms) to the specified mitk::DataNode. * * Additionally, it provides a utility function for applying properties for shaders * in mappers. */ struct MITK_CORE_EXPORT IShaderRepository { struct ShaderPrivate; class MITK_CORE_EXPORT Shader : public itk::LightObject { public: mitkClassMacro( Shader, itk::LightObject ) itkFactorylessNewMacro( Self ) ~Shader(); int GetId() const; std::string GetName() const; std::string GetMaterialXml() const; protected: Shader(); void SetId(int id); void SetName(const std::string& name); void SetMaterialXml(const std::string& xml); private: // not implemented Shader(const Shader&); Shader& operator=(const Shader&); ShaderPrivate* d; }; class MITK_CORE_EXPORT ShaderProgram : public itk::LightObject { public: virtual void Activate() = 0; virtual void Deactivate() = 0; mitkClassMacro( ShaderProgram, itk::LightObject ) }; virtual ~IShaderRepository(); virtual std::list GetShaders() const = 0; /** * \brief Return the named shader. * * \param name The shader name. * \return A Shader object. * * Names might not be unique. Use the shader id to uniquely identify a shader. */ virtual Shader::Pointer GetShader(const std::string& name) const = 0; virtual ShaderProgram::Pointer CreateShaderProgram() = 0; /** * \brief Return the shader identified by the given id. * @param id The shader id. * @return The shader object or null if the id is unknown. */ virtual Shader::Pointer GetShader(int id) const = 0; /** \brief Adds all parsed shader uniforms to property list of the given DataNode; * used by mappers. */ virtual void AddDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer, bool overwrite) const = 0; /** \brief Applies shader and shader specific variables of the specified DataNode * to the VTK object by updating the shader variables of its vtkProperty. */ virtual void UpdateShaderProgram(mitk::IShaderRepository::ShaderProgram* shaderProgram, mitk::DataNode* node, mitk::BaseRenderer* renderer) const = 0; /** \brief Loads a shader from a given file. Make sure that this stream is in the XML shader format. * * \return A unique id for the loaded shader which can be used to unload it. */ virtual int LoadShader(std::istream& stream, const std::string& name) = 0; /** * \brief Unload a previously loaded shader. * \param id The unique shader id returned by LoadShader. * \return \c true if the shader id was found and the shader was successfully unloaded, * \c false otherwise. */ virtual bool UnloadShader(int id) = 0; }; } MITK_DECLARE_SERVICE_INTERFACE(mitk::IShaderRepository, "org.mitk.services.IShaderRepository/1.0") #endif // MITKISHADERREPOSITORY_H diff --git a/Core/Code/Interfaces/mitkInteractionEventObserver.h b/Core/Code/Interfaces/mitkInteractionEventObserver.h index 3c9306534d..9d64665d1d 100644 --- a/Core/Code/Interfaces/mitkInteractionEventObserver.h +++ b/Core/Code/Interfaces/mitkInteractionEventObserver.h @@ -1,69 +1,72 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef InteractionEventObserver_h #define InteractionEventObserver_h #include #include "mitkServiceInterface.h" #include "mitkInteractionEvent.h" namespace mitk { /** + * \ingroup Interaction + * \ingroup MicroServices_Interfaces + * * \class InteractionEventObserver * \brief Base class to implement InteractionEventObservers. * * This class also provides state machine infrastructure, * but usage thereof is optional. See the Notify method for more information. */ struct MITK_CORE_EXPORT InteractionEventObserver { InteractionEventObserver(); virtual ~InteractionEventObserver(); /** * By this method all registered EventObersers are notified about every InteractionEvent, * the isHandled flag indicates if a DataInteractor has already handled that event. * InteractionEventObserver that trigger an action when observing an event may consider * this in order to not confuse the user by, triggering several independent action with one * single user event (such as a mouse click) * * If you want to use the InteractionEventObserver as a state machine give the event to the state machine by implementing, e.g. \code void mitk::InteractionEventObserver::Notify(InteractionEvent::Pointer interactionEvent, bool isHandled) { if (!isHandled) { this->HandleEvent(interactionEvent, NULL); } } \endcode * This overwrites the FilterEvents function of the EventStateMachine to ignore the DataNode, since InteractionEventObservers are not associated with one. virtual bool FilterEvents(InteractionEvent* interactionEvent, DataNode* dataNode); */ virtual void Notify(InteractionEvent* interactionEvent,bool isHandled) = 0; void Disable(); void Enable(); bool IsEnabled() const; private: bool m_IsEnabled; }; } /* namespace mitk */ MITK_DECLARE_SERVICE_INTERFACE(mitk::InteractionEventObserver, "org.mitk.InteractionEventObserver") #endif /* InteractionEventObserver_h */ diff --git a/Core/Code/Internal/mitkPointSetReaderService.h b/Core/Code/Internal/mitkPointSetReaderService.h index cfa4530b8d..a125deaea8 100644 --- a/Core/Code/Internal/mitkPointSetReaderService.h +++ b/Core/Code/Internal/mitkPointSetReaderService.h @@ -1,62 +1,64 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef _MITK_POINT_SET_READER_SERVICE__H_ #define _MITK_POINT_SET_READER_SERVICE__H_ // MITK #include #include class TiXmlElement; namespace mitk { /** + * @internal + * * @brief reads xml representations of mitk::PointSets from a file * * Reader for xml files containing one or multiple xml represenations of * mitk::PointSet. If multiple mitk::PointSet objects are stored in one file, * these are assigned to multiple BaseData objects. * * The reader is able to read the old 3D Pointsets without the "specification" and "timeseries" tags and the new 4D Pointsets. * * @ingroup IO */ class PointSetReaderService: public AbstractFileReader { public: PointSetReaderService(); virtual ~PointSetReaderService(); using AbstractFileReader::Read; virtual std::vector< itk::SmartPointer > Read(); private: PointSetReaderService(const PointSetReaderService& other); mitk::PointSet::Pointer ReadPoint(mitk::PointSet::Pointer newPointSet, TiXmlElement* currentTimeSeries, unsigned int currentTimeStep); virtual PointSetReaderService* Clone() const; }; } #endif diff --git a/Core/Code/Internal/mitkPointSetWriterService.h b/Core/Code/Internal/mitkPointSetWriterService.h index 53a676da99..275522c1c8 100644 --- a/Core/Code/Internal/mitkPointSetWriterService.h +++ b/Core/Code/Internal/mitkPointSetWriterService.h @@ -1,110 +1,112 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef _MITK_POINT_SET_WRITER_SERVICE__H_ #define _MITK_POINT_SET_WRITER_SERVICE__H_ #include #include namespace mitk { /** + * @internal + * * @brief XML-based writer for mitk::PointSets * * XML-based writer for mitk::PointSet. Multiple PointSets can be written in * a single XML file by simply setting multiple inputs to the filter. * * @ingroup IO */ class PointSetWriterService : public AbstractFileWriter { public: PointSetWriterService(); virtual ~PointSetWriterService(); using AbstractFileWriter::Write; virtual void Write(); private: PointSetWriterService(const PointSetWriterService& other); virtual mitk::PointSetWriterService* Clone() const; /** * Converts an arbitrary type to a string. The type has to * support the << operator. This works fine at least for integral * data types as float, int, long etc. * @param value the value to convert * @returns the string representation of value */ template < typename T> std::string ConvertToString( T value ); /** * Writes an XML representation of the given point set to * an outstream. The XML-Header an root node is not included! * @param pointSet the point set to be converted to xml * @param out the stream to write to. */ void WriteXML( const mitk::PointSet* pointSet, std::ostream& out ); /** * Writes an standard xml header to the given stream. * @param file the stream in which the header is written. */ void WriteXMLHeader( std::ostream &file ); /** * Write an end element tag * End-Elements following character data should pass indent = false. */ void WriteEndElement( const std::string& tag, std::ostream &file, const bool& indent = true ); /** Write a start element tag */ void WriteStartElement( const std::string &tag, std::ostream &file ); /** Write character data inside a tag. */ void WriteCharacterData( const std::string &data, std::ostream &file ); /** Writes empty spaces to the stream according to m_IndentDepth and m_Indent */ void WriteIndent( std::ostream& file ); unsigned int m_IndentDepth; const unsigned int m_Indent; static const std::string XML_POINT_SET; static const std::string XML_TIME_SERIES; static const std::string XML_TIME_SERIES_ID; static const std::string XML_POINT_SET_FILE; static const std::string XML_FILE_VERSION; static const std::string XML_POINT; static const std::string XML_SPEC; static const std::string XML_ID; static const std::string XML_X; static const std::string XML_Y; static const std::string XML_Z; static const std::string VERSION_STRING; }; } #endif diff --git a/Core/Code/Internal/mitkSurfaceVtkIO.h b/Core/Code/Internal/mitkSurfaceVtkIO.h index 8da649c81d..4eb9fbff64 100644 --- a/Core/Code/Internal/mitkSurfaceVtkIO.h +++ b/Core/Code/Internal/mitkSurfaceVtkIO.h @@ -1,59 +1,59 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef _MITK_SURFACE_VTK_IO_H_ #define _MITK_SURFACE_VTK_IO_H_ #include #include #include namespace mitk { /** + * @internal * @brief VTK-based reader and writer for mitk::Surface * * If the mitk::Surface contains multiple points of * time, multiple files are written. The life-span (time-bounds) of each * each point of time is included in the filename according to the * following scheme: * <filename>_S<timebounds[0]>E<timebounds[1]>_T<framenumber> * (S=start, E=end, T=time). * Writing of multiple files according to a given filename pattern is not * yet supported. - * @ingroup Process */ class SurfaceVtkIO : public mitk::AbstractFileIO { public: SurfaceVtkIO(const std::string& baseDataType, const CustomMimeType& mimeType, const std::string& description); virtual ConfidenceLevel GetWriterConfidenceLevel() const; protected: vtkSmartPointer GetPolyData(unsigned int t, std::string& fileName); }; } #endif //_MITK_SURFACE_VTK_IO_H_ diff --git a/Core/Code/files.cmake b/Core/Code/files.cmake index 5e4a9e7038..0f3727ce7a 100644 --- a/Core/Code/files.cmake +++ b/Core/Code/files.cmake @@ -1,424 +1,418 @@ set(H_FILES Algorithms/itkImportMitkImageContainer.h Algorithms/itkImportMitkImageContainer.txx Algorithms/itkMITKScalarImageToHistogramGenerator.h Algorithms/itkMITKScalarImageToHistogramGenerator.txx Algorithms/mitkInstantiateAccessFunctions.h Algorithms/mitkPixelTypeList.h Algorithms/mitkPPArithmeticDec.h Algorithms/mitkPPArgCount.h Algorithms/mitkPPCat.h Algorithms/mitkPPConfig.h Algorithms/mitkPPControlExprIIf.h Algorithms/mitkPPControlIf.h Algorithms/mitkPPControlIIf.h Algorithms/mitkPPDebugError.h Algorithms/mitkPPDetailAutoRec.h Algorithms/mitkPPDetailDMCAutoRec.h Algorithms/mitkPPExpand.h Algorithms/mitkPPFacilitiesEmpty.h Algorithms/mitkPPFacilitiesExpand.h Algorithms/mitkPPLogicalBool.h Algorithms/mitkPPRepetitionDetailDMCFor.h Algorithms/mitkPPRepetitionDetailEDGFor.h Algorithms/mitkPPRepetitionDetailFor.h Algorithms/mitkPPRepetitionDetailMSVCFor.h Algorithms/mitkPPRepetitionFor.h Algorithms/mitkPPSeqElem.h Algorithms/mitkPPSeqForEach.h Algorithms/mitkPPSeqForEachProduct.h Algorithms/mitkPPSeq.h Algorithms/mitkPPSeqEnum.h Algorithms/mitkPPSeqSize.h Algorithms/mitkPPSeqToTuple.h Algorithms/mitkPPStringize.h Algorithms/mitkPPTupleEat.h Algorithms/mitkPPTupleElem.h Algorithms/mitkPPTupleRem.h Algorithms/mitkClippedSurfaceBoundsCalculator.h Algorithms/mitkExtractSliceFilter.h Algorithms/mitkConvert2Dto3DImageFilter.h Algorithms/mitkPlaneClipping.h Common/mitkCommon.h Common/mitkExceptionMacro.h Common/mitkGetClassHierarchy.h DataManagement/mitkProportionalTimeGeometry.h DataManagement/mitkTimeGeometry.h DataManagement/mitkImageAccessByItk.h DataManagement/mitkImageCast.h DataManagement/mitkImagePixelAccessor.h DataManagement/mitkImagePixelReadAccessor.h DataManagement/mitkImagePixelWriteAccessor.h DataManagement/mitkImageReadAccessor.h DataManagement/mitkImageWriteAccessor.h DataManagement/mitkITKImageImport.h DataManagement/mitkITKImageImport.txx DataManagement/mitkImageToItk.h DataManagement/mitkShaderProperty.h DataManagement/mitkImageToItk.txx DataManagement/mitkTimeSlicedGeometry.h # Deprecated, empty for compatibility reasons. DataManagement/mitkPropertyListReplacedObserver.cpp DataManagement/mitkVectorDeprecated.h DataManagement/mitkArray.h DataManagement/mitkQuaternion.h DataManagement/mitkNumericTypes.h DataManagement/mitkVector.h DataManagement/mitkPoint.h DataManagement/mitkMatrix.h Interactions/mitkEventMapperAddOn.h Interactions/mitkInteractionConst.h Interfaces/mitkIDataNodeReader.h Interfaces/mitkIFileWriter.h Interfaces/mitkIFileWriter.cpp Interfaces/mitkIFileReader.h Interfaces/mitkIFileReader.cpp Rendering/mitkLocalStorageHandler.h Rendering/Colortables/HotIron.h Rendering/Colortables/Jet.h Rendering/Colortables/PET20.h Rendering/Colortables/PETColor.h IO/mitkPixelTypeTraits.h IO/mitkLocaleSwitch.h ) set(CPP_FILES Algorithms/mitkBaseDataSource.cpp Algorithms/mitkCompareImageDataFilter.cpp Algorithms/mitkMultiComponentImageDataComparisonFilter.cpp Algorithms/mitkDataNodeSource.cpp Algorithms/mitkPlaneGeometryDataToSurfaceFilter.cpp Algorithms/mitkHistogramGenerator.cpp Algorithms/mitkImageChannelSelector.cpp Algorithms/mitkImageSliceSelector.cpp Algorithms/mitkImageSource.cpp Algorithms/mitkImageTimeSelector.cpp Algorithms/mitkImageToImageFilter.cpp Algorithms/mitkImageToSurfaceFilter.cpp Algorithms/mitkPointSetSource.cpp Algorithms/mitkPointSetToPointSetFilter.cpp Algorithms/mitkRGBToRGBACastImageFilter.cpp Algorithms/mitkSubImageSelector.cpp Algorithms/mitkSurfaceSource.cpp Algorithms/mitkSurfaceToImageFilter.cpp Algorithms/mitkSurfaceToSurfaceFilter.cpp Algorithms/mitkUIDGenerator.cpp Algorithms/mitkVolumeCalculator.cpp Algorithms/mitkClippedSurfaceBoundsCalculator.cpp Algorithms/mitkExtractSliceFilter.cpp Algorithms/mitkConvert2Dto3DImageFilter.cpp Controllers/mitkBaseController.cpp Controllers/mitkCallbackFromGUIThread.cpp Controllers/mitkCameraController.cpp Controllers/mitkCameraRotationController.cpp Controllers/mitkFocusManager.cpp Controllers/mitkLimitedLinearUndo.cpp Controllers/mitkOperationEvent.cpp Controllers/mitkPlanePositionManager.cpp Controllers/mitkProgressBar.cpp Controllers/mitkRenderingManager.cpp Controllers/mitkSliceNavigationController.cpp Controllers/mitkSlicesCoordinator.cpp Controllers/mitkSlicesRotator.cpp Controllers/mitkSlicesSwiveller.cpp Controllers/mitkStatusBar.cpp Controllers/mitkStepper.cpp Controllers/mitkTestManager.cpp Controllers/mitkUndoController.cpp Controllers/mitkVerboseLimitedLinearUndo.cpp Controllers/mitkVtkInteractorCameraController.cpp Controllers/mitkVtkLayerController.cpp DataManagement/mitkProportionalTimeGeometry.cpp DataManagement/mitkTimeGeometry.cpp DataManagement/mitkAbstractTransformGeometry.cpp DataManagement/mitkAnnotationProperty.cpp DataManagement/mitkApplicationCursor.cpp DataManagement/mitkBaseData.cpp DataManagement/mitkBaseGeometry.cpp DataManagement/mitkGeometryTransformHolder.cpp DataManagement/mitkBaseProperty.cpp DataManagement/mitkClippingProperty.cpp DataManagement/mitkChannelDescriptor.cpp DataManagement/mitkColorProperty.cpp DataManagement/mitkDataStorage.cpp # DataManagement/mitkDataTree.cpp DataManagement/mitkDataNode.cpp # DataManagement/mitkDataTreeStorage.cpp DataManagement/mitkDisplayGeometry.cpp DataManagement/mitkEnumerationProperty.cpp DataManagement/mitkPlaneGeometryData.cpp DataManagement/mitkGeometry3D.cpp DataManagement/mitkGeometryData.cpp DataManagement/mitkGroupTagProperty.cpp DataManagement/mitkImage.cpp DataManagement/mitkImageAccessorBase.cpp DataManagement/mitkImageCaster.cpp DataManagement/mitkImageCastPart1.cpp DataManagement/mitkImageCastPart2.cpp DataManagement/mitkImageCastPart3.cpp DataManagement/mitkImageCastPart4.cpp DataManagement/mitkImageDataItem.cpp DataManagement/mitkImageDescriptor.cpp DataManagement/mitkImageReadAccessor.cpp DataManagement/mitkImageStatisticsHolder.cpp DataManagement/mitkImageVtkAccessor.cpp DataManagement/mitkImageVtkReadAccessor.cpp DataManagement/mitkImageVtkWriteAccessor.cpp DataManagement/mitkImageWriteAccessor.cpp DataManagement/mitkLandmarkProjectorBasedCurvedGeometry.cpp DataManagement/mitkLandmarkProjector.cpp DataManagement/mitkLine.cpp DataManagement/mitkLevelWindow.cpp DataManagement/mitkLevelWindowManager.cpp DataManagement/mitkLevelWindowPreset.cpp DataManagement/mitkLevelWindowProperty.cpp DataManagement/mitkLookupTable.cpp DataManagement/mitkLookupTableProperty.cpp DataManagement/mitkLookupTables.cpp # specializations of GenericLookupTable DataManagement/mitkMemoryUtilities.cpp DataManagement/mitkModalityProperty.cpp DataManagement/mitkModeOperation.cpp DataManagement/mitkModifiedLock.cpp DataManagement/mitkNodePredicateAnd.cpp DataManagement/mitkNodePredicateBase.cpp DataManagement/mitkNodePredicateCompositeBase.cpp DataManagement/mitkNodePredicateData.cpp DataManagement/mitkNodePredicateDataType.cpp DataManagement/mitkNodePredicateDimension.cpp DataManagement/mitkNodePredicateFirstLevel.cpp DataManagement/mitkNodePredicateNot.cpp DataManagement/mitkNodePredicateOr.cpp DataManagement/mitkNodePredicateProperty.cpp DataManagement/mitkNodePredicateSource.cpp DataManagement/mitkPlaneOrientationProperty.cpp DataManagement/mitkPlaneGeometry.cpp DataManagement/mitkPlaneOperation.cpp DataManagement/mitkPointOperation.cpp DataManagement/mitkPointSet.cpp DataManagement/mitkProperties.cpp DataManagement/mitkPropertyList.cpp DataManagement/mitkPropertyObserver.cpp DataManagement/mitkRestorePlanePositionOperation.cpp DataManagement/mitkApplyTransformMatrixOperation.cpp DataManagement/mitkRotationOperation.cpp DataManagement/mitkSlicedData.cpp DataManagement/mitkSlicedGeometry3D.cpp DataManagement/mitkSmartPointerProperty.cpp DataManagement/mitkStandaloneDataStorage.cpp DataManagement/mitkStateTransitionOperation.cpp DataManagement/mitkStringProperty.cpp DataManagement/mitkSurface.cpp DataManagement/mitkSurfaceOperation.cpp DataManagement/mitkThinPlateSplineCurvedGeometry.cpp DataManagement/mitkTransferFunction.cpp DataManagement/mitkTransferFunctionProperty.cpp DataManagement/mitkTransferFunctionInitializer.cpp DataManagement/mitkVector.cpp DataManagement/mitkNumericConstants.cpp DataManagement/mitkVtkInterpolationProperty.cpp DataManagement/mitkVtkRepresentationProperty.cpp DataManagement/mitkVtkResliceInterpolationProperty.cpp DataManagement/mitkVtkScalarModeProperty.cpp DataManagement/mitkVtkVolumeRenderingProperty.cpp DataManagement/mitkWeakPointerProperty.cpp DataManagement/mitkRenderingModeProperty.cpp DataManagement/mitkResliceMethodProperty.cpp DataManagement/mitkMaterial.cpp DataManagement/mitkPointSetShapeProperty.cpp DataManagement/mitkFloatPropertyExtension.cpp DataManagement/mitkIntPropertyExtension.cpp DataManagement/mitkPropertyExtension.cpp DataManagement/mitkPropertyFilter.cpp DataManagement/mitkPropertyAliases.cpp DataManagement/mitkPropertyDescriptions.cpp DataManagement/mitkPropertyExtensions.cpp DataManagement/mitkPropertyFilters.cpp DataManagement/mitkShaderProperty.cpp Interactions/mitkAction.cpp Interactions/mitkAffineInteractor.cpp Interactions/mitkBindDispatcherInteractor.cpp Interactions/mitkCoordinateSupplier.cpp Interactions/mitkDataInteractor.cpp Interactions/mitkDispatcher.cpp Interactions/mitkDisplayCoordinateOperation.cpp Interactions/mitkDisplayInteractor.cpp Interactions/mitkDisplayPositionEvent.cpp # Interactions/mitkDisplayVectorInteractorLevelWindow.cpp # legacy, prob even now unneeded # Interactions/mitkDisplayVectorInteractorScroll.cpp Interactions/mitkEvent.cpp Interactions/mitkEventConfig.cpp Interactions/mitkEventDescription.cpp Interactions/mitkEventFactory.cpp Interactions/mitkInteractionEventHandler.cpp Interactions/mitkEventMapper.cpp Interactions/mitkEventRecorder.cpp Interactions/mitkEventStateMachine.cpp Interactions/mitkGlobalInteraction.cpp Interactions/mitkInteractor.cpp Interactions/mitkInternalEvent.cpp Interactions/mitkInteractionEvent.cpp Interactions/mitkInteractionEventConst.cpp Interactions/mitkInteractionPositionEvent.cpp Interactions/mitkInteractionKeyEvent.cpp Interactions/mitkMousePressEvent.cpp Interactions/mitkMouseMoveEvent.cpp Interactions/mitkMouseReleaseEvent.cpp Interactions/mitkMouseWheelEvent.cpp Interactions/mitkMouseDoubleClickEvent.cpp Interactions/mitkMouseModeSwitcher.cpp Interactions/mitkMouseMovePointSetInteractor.cpp Interactions/mitkMoveBaseDataInteractor.cpp Interactions/mitkNodeDepententPointSetInteractor.cpp Interactions/mitkPointSetDataInteractor.cpp Interactions/mitkPointSetInteractor.cpp Interactions/mitkPositionEvent.cpp Interactions/mitkPositionTracker.cpp Interactions/mitkSinglePointDataInteractor.cpp Interactions/mitkStateMachineAction.cpp Interactions/mitkStateMachineCondition.cpp Interactions/mitkStateMachineState.cpp Interactions/mitkStateMachineTransition.cpp Interactions/mitkState.cpp Interactions/mitkStateMachineContainer.cpp Interactions/mitkStateEvent.cpp Interactions/mitkStateMachine.cpp Interactions/mitkStateMachineFactory.cpp Interactions/mitkTransition.cpp Interactions/mitkWheelEvent.cpp Interactions/mitkKeyEvent.cpp Interactions/mitkVtkEventAdapter.cpp Interactions/mitkVtkInteractorStyle.cxx Interactions/mitkCrosshairPositionEvent.cpp Interactions/mitkXML2EventParser.cpp Interfaces/mitkIMimeTypeProvider.cpp Interfaces/mitkInteractionEventObserver.cpp Interfaces/mitkIShaderRepository.cpp Interfaces/mitkIPropertyAliases.cpp Interfaces/mitkIPropertyDescriptions.cpp Interfaces/mitkIPropertyExtensions.cpp Interfaces/mitkIPropertyFilters.cpp Interfaces/mitkIPersistenceService.cpp IO/mitkAbstractFileReader.cpp IO/mitkAbstractFileWriter.cpp IO/mitkAbstractFileIO.cpp IO/mitkCustomMimeType.cpp IO/mitkDicomSeriesReader.cpp IO/mitkDicomSR_LoadDICOMScalar.cpp IO/mitkDicomSR_LoadDICOMScalar4D.cpp IO/mitkDicomSR_LoadDICOMRGBPixel.cpp IO/mitkDicomSR_LoadDICOMRGBPixel4D.cpp IO/mitkDicomSR_ImageBlockDescriptor.cpp IO/mitkDicomSR_GantryTiltInformation.cpp IO/mitkDicomSR_SliceGroupingResult.cpp IO/mitkFileReader.cpp IO/mitkFileReaderRegistry.cpp IO/mitkFileReaderSelector.cpp IO/mitkFileWriter.cpp IO/mitkFileWriterRegistry.cpp IO/mitkFileWriterSelector.cpp IO/mitkIFileIO.cpp -# IO/mitkIpPicGet.c IO/mitkImageGenerator.cpp + IO/mitkIOAdapter.h IO/mitkIOConstants.cpp IO/mitkIOUtil.cpp IO/mitkIOMimeTypes.cpp IO/mitkItkLoggingAdapter.cpp IO/mitkMimeType.cpp IO/mitkOperation.cpp -# IO/mitkPicFileIOFactory.cpp -# IO/mitkPicFileReader.cpp -# IO/mitkPicFileWriter.cpp -# IO/mitkPicHelper.cpp -# IO/mitkPicVolumeTimeSeriesIOFactory.cpp -# IO/mitkPicVolumeTimeSeriesReader.cpp IO/mitkPixelType.cpp IO/mitkStandardFileLocations.cpp IO/mitkVtkLoggingAdapter.cpp IO/mitkLog.cpp Rendering/mitkBaseRenderer.cpp Rendering/mitkVtkMapper.cpp Rendering/mitkRenderWindowFrame.cpp Rendering/mitkPlaneGeometryDataMapper2D.cpp Rendering/mitkPlaneGeometryDataVtkMapper3D.cpp #Rendering/mitkGLMapper.cpp Moved to deprecated LegacyGL Module Rendering/mitkGradientBackground.cpp Rendering/mitkManufacturerLogo.cpp Rendering/mitkMapper.cpp Rendering/mitkPointSetVtkMapper2D.cpp Rendering/mitkPointSetVtkMapper3D.cpp Rendering/mitkSurfaceVtkMapper2D.cpp #Rendering/mitkSurfaceGLMapper2D.cpp Moved to deprecated LegacyGL Module Rendering/mitkSurfaceVtkMapper3D.cpp Rendering/mitkVolumeDataVtkMapper3D.cpp Rendering/mitkVtkPropRenderer.cpp Rendering/mitkVtkWidgetRendering.cpp Rendering/vtkMitkRectangleProp.cpp Rendering/vtkMitkRenderProp.cpp Rendering/mitkVtkEventProvider.cpp Rendering/mitkRenderWindow.cpp Rendering/mitkRenderWindowBase.cpp Rendering/mitkImageVtkMapper2D.cpp Rendering/vtkMitkThickSlicesFilter.cpp Rendering/vtkMitkLevelWindowFilter.cpp Rendering/vtkNeverTranslucentTexture.cpp Rendering/mitkOverlay.cpp Rendering/mitkVtkOverlay.cpp Rendering/mitkVtkOverlay2D.cpp Rendering/mitkVtkOverlay3D.cpp Rendering/mitkOverlayManager.cpp Rendering/mitkAbstractOverlayLayouter.cpp Common/mitkException.cpp Common/mitkCoreObjectFactoryBase.cpp Common/mitkCoreObjectFactory.cpp Common/mitkCoreServices.cpp Internal/mitkCoreActivator.cpp Internal/mitkDicomSeriesReaderService.cpp Internal/mitkFileReaderWriterBase.cpp Internal/mitkImageVtkLegacyIO.cpp Internal/mitkImageVtkXmlIO.cpp Internal/mitkItkImageIO.cpp Internal/mitkLegacyFileReaderService.cpp Internal/mitkLegacyFileWriterService.cpp Internal/mitkMimeTypeProvider.cpp Internal/mitkPointSetReaderService.cpp Internal/mitkPointSetWriterService.cpp Internal/mitkRawImageFileReader.cpp Internal/mitkSurfaceStlIO.cpp Internal/mitkSurfaceVtkIO.cpp Internal/mitkSurfaceVtkLegacyIO.cpp Internal/mitkSurfaceVtkXmlIO.cpp ) set(RESOURCE_FILES Interactions/globalConfig.xml Interactions/DisplayInteraction.xml Interactions/DisplayConfig.xml Interactions/DisplayConfigPACS.xml Interactions/DisplayConfigPACSPan.xml Interactions/DisplayConfigPACSScroll.xml Interactions/DisplayConfigPACSZoom.xml Interactions/DisplayConfigPACSLevelWindow.xml Interactions/DisplayConfigMITK.xml Interactions/PointSet.xml Interactions/Legacy/StateMachine.xml Interactions/Legacy/DisplayConfigMITKTools.xml Interactions/PointSetConfig.xml mitkLevelWindowPresets.xml ) diff --git a/Documentation/CMakeLists.txt b/Documentation/CMakeLists.txt index 499a1b24f7..53acc94f47 100644 --- a/Documentation/CMakeLists.txt +++ b/Documentation/CMakeLists.txt @@ -1,227 +1,225 @@ # # Variables: # MITK_DOXYGEN_OUTPUT_DIR: doxygen output directory (optional) # Compile source code snippets #add_subdirectory(Snippets) find_package(Doxygen) if(DOXYGEN_FOUND) # Different doxygen versions produce significantly different behaviour in the MITK documentation # especially in regards to the MITK Qt assistant help files and markdown files. # The HTML documentation is supposed to be build with Doxygen 1.8.7 or newer, the # Qt assistant QCH files are supposed to be generated with Doxygen 1.8.7 or newer. # So we check for 1.8.7 here and QCH generation support is checked in # BlueBerry/CMakeLists.txt set(supported_doxygen_version "1.8.7") if(DOXYGEN_VERSION VERSION_LESS ${supported_doxygen_version}) MESSAGE(WARNING "Unsupported doxygen version ${DOXYGEN_VERSION}. The MITK HTML documentation has been tested to work with doxygen ${supported_doxygen_version} or newer.") endif() option(USE_DOT "Use dot program for generating graphical class diagrams with doxygen, if available" ON) option(MITK_DOXYGEN_BUILD_ALWAYS "Always build the MITK documentation when building the default target" OFF) option(MITK_DOXYGEN_GENERATE_QCH_FILES "Use doxygen to generate Qt compressed help files for MITK docs" OFF) mark_as_advanced(USE_DOT MITK_DOXYGEN_BUILD_ALWAYS MITK_DOXYGEN_GENERATE_QCH_FILES) if (MITK_DOXYGEN_GENERATE_QCH_FILES AND DOXYGEN_VERSION VERSION_LESS "1.8.7") message(WARNING "> Forcing MITK_DOXYGEN_GENERATE_QCH_FILES to OFF because Doxygen version 1.8.7 or newer not found.") set(MITK_DOXYGEN_GENERATE_QCH_FILES OFF CACHE BOOL "Use doxygen to generate Qt compressed help files for MITK docs" FORCE) endif() set(HAVE_DOT "NO") if(DOXYGEN_DOT_EXECUTABLE AND USE_DOT) set(HAVE_DOT "YES") endif() set(MITK_DOXYGEN_TAGFILE_NAME ${MITK_DOXYGEN_OUTPUT_DIR}/MITK.tag CACHE INTERNAL "MITK Doxygen tag file") # This is relative to the working directory of the doxygen command set(MITK_DOXYGEN_STYLESHEET mitk_doxygen_extra.css) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${MITK_DOXYGEN_STYLESHEET} ${CMAKE_CURRENT_BINARY_DIR}/${MITK_DOXYGEN_STYLESHEET} @COPYONLY) # Create QCH files for MITK and external projects set(MITK_DOXYGEN_GENERATE_QHP "NO") if(MITK_DOXYGEN_GENERATE_QCH_FILES) find_program(QT_HELPGENERATOR_EXECUTABLE NAMES qhelpgenerator qhelpgenerator-qt4 qhelpgenerator4 PATHS ${QT_BINARY_DIR} DOC "The location of the the Qt help generator executable" NO_DEFAULT_PATH ) mark_as_advanced(QT_HELPGENERATOR_EXECUTABLE) if(NOT QT_HELPGENERATOR_EXECUTABLE) message(SEND_ERROR "The Qt help generator could not be found. Disabling qch generation") else() set(MITK_DOXYGEN_GENERATE_QHP "YES") endif() # The name of the generated MITK qch file, relative to the # Doxygen HTML output folder set(MITK_DOXYGEN_QCH_FILE "${MITK_BINARY_DIR}/MITK-${MITK_REVISION_ID}.qch") # Generating ITK and VTK docs it not done yet #option(MITK_DOXYGEN_GENERATE_VTK_QCH_FILE "Use doxygen to generate a Qt compressed help file for VTK docs" OFF) #option(MITK_DOXYGEN_GENERATE_ITK_QCH_FILE "Use doxygen to generate a Qt compressed help file for ITK docs" OFF) #mark_as_advanced(MITK_DOXYGEN_GENERATE_VTK_QCH_FILE MITK_DOXYGEN_GENERATE_ITK_QCH_FILE) endif() if(MITK_USE_BLUEBERRY) file(RELATIVE_PATH _blueberry_doxygen_path ${MITK_DOXYGEN_OUTPUT_DIR}/html ${BLUEBERRY_DOXYGEN_OUTPUT_DIR}/html) set(BLUEBERRY_DOXYGEN_TAGFILE "${BLUEBERRY_DOXYGEN_TAGFILE_NAME}=${_blueberry_doxygen_path}") set(BLUEBERRY_DOXYGEN_LINK "BlueBerry Documentation") set(MITK_XP_LINK "\\ref mitkExtPointsIndex") configure_file(schema.css ${MITK_DOXYGEN_OUTPUT_DIR}/html/schema.css) set(MITK_DOXYGEN_ENABLED_SECTIONS "${MITK_DOXYGEN_ENABLED_SECTIONS} BLUEBERRY") endif(MITK_USE_BLUEBERRY) # Compile a doxygen input filter for processing CMake scripts include(mitkFunctionCMakeDoxygenFilterCompile) mitkFunctionCMakeDoxygenFilterCompile(NAMESPACE "CMake") # Configure some doxygen options if(NOT MITK_DOXYGEN_INTERNAL_DOCS) set(MITK_DOXYGEN_INTERNAL_DOCS "NO") set(MITK_DOXYGEN_HIDE_FRIEND_COMPOUNDS "YES") set(MITK_DOXYGEN_EXCLUDE_PATTERNS "*_p.* *Private.h */internal/*") else() set(MITK_DOXYGEN_HIDE_FRIEND_COMPOUNDS "NO") set(MITK_DOXYGEN_EXCLUDE_PATTERNS "") endif() if(NOT MITK_DOXYGEN_GENERATE_TODOLIST) set(MITK_DOXYGEN_GENERATE_TODOLIST "NO") endif() if(NOT MITK_DOXYGEN_GENERATE_BUGLIST) set(MITK_DOXYGEN_GENERATE_BUGLIST "NO") endif() if(NOT MITK_DOXYGEN_HTML_DYNAMIC_SECTIONS) set(MITK_DOXYGEN_HTML_DYNAMIC_SECTIONS "NO") endif() if(NOT MITK_DOXYGEN_UML_LOOK) set(MITK_DOXYGEN_UML_LOOK "NO") endif() if(NOT MITK_DOXYGEN_GENERATE_DEPRECATEDLIST) set(MITK_DOXYGEN_GENERATE_DEPRECATEDLIST "YES") endif() if(NOT DEFINED MITK_DOXYGEN_DOT_NUM_THREADS) set(MITK_DOXYGEN_DOT_NUM_THREADS 0) endif() # parse which plug-in documentation to activate set(USERS_GUIDE_INPUT "${MITK_SOURCE_DIR}/Documentation/Doxygen/UserManual/") if(MITK_USE_BLUEBERRY) if(MITK_BUILD_ALL_PLUGINS) set(USERS_GUIDE_INPUT "${USERS_GUIDE_INPUT} \\ ${MITK_SOURCE_DIR}/Plugins/") else() foreach(mitk_plugin ${${CMAKE_PROJECT_NAME}_PLUGIN_LIBRARIES}) # we want each line to end in " \" and each directory be on a separate line set(USERS_GUIDE_INPUT "${USERS_GUIDE_INPUT} \\ ${${mitk_plugin}_SOURCE_DIR}/") endforeach() endif() if(MITK_BUILD_EXAMPLES) set(USERS_GUIDE_INPUT "${USERS_GUIDE_INPUT} \\ ${MITK_SOURCE_DIR}/Examples/Plugins/") endif() endif() # create output directories for the guides file(MAKE_DIRECTORY ${MITK_DOXYGEN_OUTPUT_DIR}/Guides/Users_Guide/) file(MAKE_DIRECTORY ${MITK_DOXYGEN_OUTPUT_DIR}/Guides/Developers_Guide/) -configure_file(Doxygen/MainPage.dox.in - ${CMAKE_CURRENT_BINARY_DIR}/Doxygen/MainPage.dox) configure_file(doxygen.conf.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf) configure_file(doxygen_users_guide.conf.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen_users_guide.conf) configure_file(doxygen_developers_guide.conf.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen_developers_guide.conf) if(MITK_DOXYGEN_BUILD_ALWAYS) set(_doc_in_all "ALL") else() set(_doc_in_all "") endif() add_custom_target(doc ${_doc_in_all} ${DOXYGEN} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(doc_usersguide ${DOXYGEN} ${CMAKE_CURRENT_BINARY_DIR}/doxygen_users_guide.conf WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(doc_developersguide ${DOXYGEN} ${CMAKE_CURRENT_BINARY_DIR}/doxygen_developers_guide.conf WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) if(MITK_USE_BLUEBERRY) # convert the extension points schema files into html find_package(Ant) if(ANT_FOUND AND BLUEBERRY_DOC_TOOLS_DIR) list(APPEND MITK_XP_GLOB_EXPRESSIONS ${MITK_SOURCE_DIR}/Plugins/plugin.xml) file(GLOB_RECURSE _plugin_xmls ${MITK_XP_GLOB_EXPRESSIONS}) MACRO_CONVERT_SCHEMA(INPUT ${_plugin_xmls} OUTPUT_DIR "${MITK_DOXYGEN_OUTPUT_DIR}/html/extension-points/html" TARGET_NAME mitkXPDoc ) add_dependencies(doc mitkXPDoc BlueBerryXPDoc) #if(${PROJECT_NAME} STREQUAL "MITK") # add_dependencies(doc BlueBerryDoc) #endif() endif(ANT_FOUND AND BLUEBERRY_DOC_TOOLS_DIR) endif(MITK_USE_BLUEBERRY) #if(MITK_DOXYGEN_GENERATE_ITK_QCH_FILE) # # add the command to generate the ITK documantation # add_custom_target(doc-itk # COMMAND ${DOXYGEN} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.itk.conf) # add_dependencies(doc doc-itk) #endif() #if(MITK_DOXYGEN_GENERATE_VTK_QCH_FILE) # # add the command to generate the VTK documantation # add_custom_target(doc-vtk # COMMAND ${DOXYGEN} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.vtk.conf) # add_dependencies(doc doc-vtk) #endif() else(DOXYGEN_FOUND) # copy blank documentation page to prevent QtHelp from being shown # copy the .qhc and .qch files to $MITK_BIN/mitk/bin/ExtBundles/resources/ configure_file(pregenerated/MITKBlankPage.qch ${MITK_BINARY_DIR}/bin/ExtBundles/org.mitk.gui.qt.extapplication/resources/MITKBlankPage.qch COPYONLY) configure_file(pregenerated/MitkExtQtHelpCollection.qhc ${MITK_BINARY_DIR}/bin/ExtBundles/org.mitk.gui.qt.extapplication/resources/MitkExtQtHelpCollection.qhc COPYONLY) endif(DOXYGEN_FOUND) diff --git a/Documentation/Doxygen/Overview/Overview.dox b/Documentation/Doxygen/1-Overview/Overview.dox similarity index 80% rename from Documentation/Doxygen/Overview/Overview.dox rename to Documentation/Doxygen/1-Overview/Overview.dox index 5427954822..15ed4cd549 100644 --- a/Documentation/Doxygen/Overview/Overview.dox +++ b/Documentation/Doxygen/1-Overview/Overview.dox @@ -1,31 +1,30 @@ /** -\page Overview MITK: An Overview - -The Medical Imaging Interaction Toolkit (MITK) is a powerful application and can also be used as either a framework or a toolkiit for Software development. The following options are the most common usage scenarios. - - - +\page Overview An Overview +\ingroup index +The Medical Imaging Interaction Toolkit (MITK) is a versatile and flexible open-source +project. It can be used as a C++ toolkit or application framework for software development. +The following sections describe the most common usage scenarios. I want to use MITK as an application You will use the MITK Workbench as an end user and will find user manuals in \ref UserManualPortal and \ref PluginListPage. I want to develop my own software framework, and use some of MITK's data structures and algorithms You will use MITK as a toolkit and probably benefit most from the \ref BuildInstructionsPage and MITK API Documentation. I want to use the MITK and BlueBerry software framework to develop my own software Here you have again two options. I want use the MITK Workbench and extend its capabilities You are using MITK as software framework and writing your own modules and plugins for MITK. You want to read the \ref BuildInstructionsPage and further on \ref Development. Also you might want to take a look at our \ref CMAKE_FAQ. I want to create my own application based on MITK This is probably the most common way to use MITK. You are using MITK as software framework and building your own project and application using MITK. You want to read \ref HowToNewProject and the general information in \ref Development. Also you might want to take a look at our \ref CMAKE_FAQ. -*/ \ No newline at end of file +*/ diff --git a/Documentation/Doxygen/UserManual/Applications.dox b/Documentation/Doxygen/2-UserManual/Applications.dox similarity index 99% rename from Documentation/Doxygen/UserManual/Applications.dox rename to Documentation/Doxygen/2-UserManual/Applications.dox index cba372ea38..6ffd3c0af2 100644 --- a/Documentation/Doxygen/UserManual/Applications.dox +++ b/Documentation/Doxygen/2-UserManual/Applications.dox @@ -1,33 +1,33 @@ /** \page ApplicationsPage Using MITK and Applications \tableofcontents \section ApplicationsPageApplications What are Applications? Applications are special versions of MITK which contain functionality aimed at solving a special task. Usually they are aimed at a selective audience or solving a particular problem. As such they focus on certain capabilities of MITK, while ignoring others. The main reason for this is to supply the users of the application with the power of MITK for solving their tasks, without daunting them with an overwhelming number of menus and options. At the same time, this allows the creation of an elegant and easily comprehensible workflow for your task. The Diffusion Imaging Application for example contains all the functionality necessary for the field of neuro-imaging, but does not contain support for ultrasound imaging. A typical example of this would be an application which contains only views related to the analysis of the human brain (particular question) or one which contains only what is necessary for displaying medical data in the classroom (specific audience). \section ApplicationsPageWhatAmIUsing Which Application am I using? If you are unsure which application you are currently using, start the application and have a look in the Title Bar. You should see it's name there. - + \imageMacro{ApplicationTitle.jpg,"The application name is displayed in the title bar",16} - + \section ApplicationsPageApplicationsList List of Applications If you are interested in using a specific application, currently developed by the MITK team you might want to take a look first at the \ref MITKUserManualPage . Further information on any application can be found here:
  • \subpage org_mitkworkbench
  • \subpage org_dti_atlas_application
  • \subpage org_mitk_gui_qt_diffusionimagingapp
*/ \ No newline at end of file diff --git a/Documentation/Doxygen/UserManual/MITKPerspectiveManualsList.dox b/Documentation/Doxygen/2-UserManual/MITKPerspectiveManualsList.dox similarity index 92% rename from Documentation/Doxygen/UserManual/MITKPerspectiveManualsList.dox rename to Documentation/Doxygen/2-UserManual/MITKPerspectiveManualsList.dox index 66aea15350..c4750e9113 100644 --- a/Documentation/Doxygen/UserManual/MITKPerspectiveManualsList.dox +++ b/Documentation/Doxygen/2-UserManual/MITKPerspectiveManualsList.dox @@ -1,12 +1,12 @@ /** \page PerspectiveListPage MITK Perspective Manuals \section PerspectiveListPageOverview Overview -Perspectives provide a selection of plugins and settings which synergize well in order to solve certain problems. This can include placement of views as well in order to create an environment suited to solve the problem at hand. +Perspectives provide a selection of plugins and settings which synergize well in order to solve certain problems. This can include placement of views as well in order to create an environment suited to solve the problem at hand. \section PerspectiveListPagePerspectiveList List of Perspectives \li \subpage org_mitk_gui_qt_extapplication_perspectives_visualizations */ diff --git a/Documentation/Doxygen/UserManual/MITKPluginManualsList.dox b/Documentation/Doxygen/2-UserManual/MITKPluginManualsList.dox similarity index 100% rename from Documentation/Doxygen/UserManual/MITKPluginManualsList.dox rename to Documentation/Doxygen/2-UserManual/MITKPluginManualsList.dox diff --git a/Documentation/Doxygen/UserManual/MiniApps.dox b/Documentation/Doxygen/2-UserManual/MiniApps.dox similarity index 100% rename from Documentation/Doxygen/UserManual/MiniApps.dox rename to Documentation/Doxygen/2-UserManual/MiniApps.dox diff --git a/Documentation/Doxygen/UserManual/UserManualPortal.dox b/Documentation/Doxygen/2-UserManual/UserManualPortal.dox similarity index 93% rename from Documentation/Doxygen/UserManual/UserManualPortal.dox rename to Documentation/Doxygen/2-UserManual/UserManualPortal.dox index 94b5bf8e9d..71daca8bcf 100644 --- a/Documentation/Doxygen/UserManual/UserManualPortal.dox +++ b/Documentation/Doxygen/2-UserManual/UserManualPortal.dox @@ -1,21 +1,21 @@ /** -\usersguidemainpage{UserManualPortal} MITK: User Manual +\usersguidemainpage{UserManualPortal} User Manual To get an introduction to the usage of any MITK based application please read \ref MITKUserManualPage. It will give you an overview of most of the common questions, such as how to load or save data or navigate within it. This is a good starting point for first questions. Depending on what kind of work you intend do perform with MITK, certain applications are better suited to your needs than others. MITK offers a number of these Applications, each of which features a set of Plugins, which can solve certain tasks. To Learn more about MITK applications, please visit the \ref ApplicationsPage. For more specific information on how a plugin operates you can find the plugin documentation in \ref PluginListPage. The Plugin documentation usually explains the functionality in depth and should solve most problems you might encounter with the plugin. Depending on the application you are using you might have only some or all of the listed plugins available. Lastly, if your question is not answered here, please use our Mailinglist to let us know about your problem. Alternatively, you can contact us directly. -

UserManualPortalTopics List of topics

+

List of topics

  • \subpage MITKUserManualPage
  • \subpage ApplicationsPage
  • \subpage PluginListPage
  • \subpage PerspectiveListPage
  • \subpage MiniAppExplainPage
*/ diff --git a/Documentation/Doxygen/UserManual/images/ApplicationTitle.jpg b/Documentation/Doxygen/2-UserManual/images/ApplicationTitle.jpg similarity index 100% rename from Documentation/Doxygen/UserManual/images/ApplicationTitle.jpg rename to Documentation/Doxygen/2-UserManual/images/ApplicationTitle.jpg diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryExampleLauncherDialog.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryExampleLauncherDialog.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryExampleLauncherDialog.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryExampleLauncherDialog.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryExamples.dox b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryExamples.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryExamples.dox rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryExamples.dox diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryExtensionPointsIntro.dox b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryExtensionPointsIntro.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryExtensionPointsIntro.dox rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryExtensionPointsIntro.dox diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryIntro.dox b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryIntro.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerryIntro.dox rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerryIntro.dox diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerrySelectionServiceIntro.dox b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerrySelectionServiceIntro.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/BlueBerrySelectionServiceIntro.dox rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/BlueBerrySelectionServiceIntro.dox diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/ExtensionPointEx.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/ExtensionPointEx.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/ExtensionPointEx.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/ExtensionPointEx.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/ExtensionPoints.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/ExtensionPoints.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/ExtensionPoints.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/ExtensionPoints.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/MitkSelectionService.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/MitkSelectionService.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/MitkSelectionService.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/MitkSelectionService.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.xcf b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.xcf similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.xcf rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/SelectionServiceDiagram.xcf diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/application-window.jpg b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/application-window.jpg similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/application-window.jpg rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/application-window.jpg diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-class-diagram.jpg b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-class-diagram.jpg similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-class-diagram.jpg rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-class-diagram.jpg diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-page.jpg b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-page.jpg similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-page.jpg rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-page.jpg diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-editor-area.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-editor-area.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-editor-area.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-editor-area.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-editor-area.xcf b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-editor-area.xcf similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-editor-area.xcf rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-editor-area.xcf diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-perspective.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-perspective.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-perspective.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-perspective.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-perspective.xcf b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-perspective.xcf similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-perspective.xcf rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-perspective.xcf diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-views.png b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-views.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-views.png rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-views.png diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-views.xcf b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-views.xcf similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window-views.xcf rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window-views.xcf diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window.jpg b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window.jpg similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench-window.jpg rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench-window.jpg diff --git a/Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench.jpg b/Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench.jpg similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/BlueBerry/workbench.jpg rename to Documentation/Doxygen/3-DeveloperManual/Application/BlueBerry/workbench.jpg diff --git a/Documentation/Doxygen/DeveloperManual/Application/Deployment.dox b/Documentation/Doxygen/3-DeveloperManual/Application/Deployment.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/Deployment.dox rename to Documentation/Doxygen/3-DeveloperManual/Application/Deployment.dox diff --git a/Documentation/Doxygen/DeveloperManual/Application/DevelopmentApplication.dox b/Documentation/Doxygen/3-DeveloperManual/Application/DevelopmentApplication.dox similarity index 97% rename from Documentation/Doxygen/DeveloperManual/Application/DevelopmentApplication.dox rename to Documentation/Doxygen/3-DeveloperManual/Application/DevelopmentApplication.dox index 4e00e090fc..5cb70cc845 100644 --- a/Documentation/Doxygen/DeveloperManual/Application/DevelopmentApplication.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Application/DevelopmentApplication.dox @@ -1,17 +1,17 @@ /** \page DevelopmentApplication Developing with the MITK Application Framework -MITK offers a powerful application featuring a plugin system and many predefined plugins. You can configure this application to offer a set of functionality to the user and easily create an installer. +MITK offers a powerful application featuring a plugin system and many predefined plugins. You can configure this application to offer a set of functionality to the user and easily create an installer. Working with the application, you will have to learn about extension points and the Blueberry framework itself. If you are new to the matter, please also consult \ref Architecture and \ref FirstSteps. -
    +
    • \subpage BlueBerryIntro
    • \subpage BlueBerryExamples
    The MITK application extension-point reference is available here: - \subpage mitkExtPointsIndex */ diff --git a/Documentation/Doxygen/DeveloperManual/Application/ExtensionPointReference.dox b/Documentation/Doxygen/3-DeveloperManual/Application/ExtensionPointReference.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Application/ExtensionPointReference.dox rename to Documentation/Doxygen/3-DeveloperManual/Application/ExtensionPointReference.dox diff --git a/Documentation/Doxygen/DeveloperManual/DeveloperManualPortal.dox b/Documentation/Doxygen/3-DeveloperManual/DeveloperManualPortal.dox similarity index 95% rename from Documentation/Doxygen/DeveloperManual/DeveloperManualPortal.dox rename to Documentation/Doxygen/3-DeveloperManual/DeveloperManualPortal.dox index 3b6ec1141b..425b916c4a 100644 --- a/Documentation/Doxygen/DeveloperManual/DeveloperManualPortal.dox +++ b/Documentation/Doxygen/3-DeveloperManual/DeveloperManualPortal.dox @@ -1,33 +1,33 @@ /** -\developersguidemainpage{DeveloperManualPortal} MITK: Developer Manual +\developersguidemainpage{DeveloperManualPortal} Developer Manual Development with MITK can happen under several conditions. Depending on whether you are using the Toolkit or the entire application, different sections may apply to you. In case you are unsure about what you need, please refer to \link Architecture The Architecture of MITK text\endlink. An extensive Introduction to MITK is available under \link StartingDevelopment Starting your MITK Development\endlink. Once you have made yourself familiar with MITK, you should have a look at the \link Concepts Development Concepts\endlink, as MITK implements a lot of high-level functionality. Knowing about these concepts will prevent you from reimplementing functionality. Once you start consuming more specific functionality, the \link MITKModuleManualsListPage Module Manual\endlink will be helpful to understand how a specific plugin works and what functionality it provides. Finally, generated API-Documentation can be found \link DevelopmentAPI here\endlink.
    • \subpage StartingDevelopment
      • \ref Architecture
      • \ref SettingUpMITK
      • \ref GettingToKnowMITK
      • \ref FirstSteps
      • \ref AboutTestingPage
    • \subpage Concepts
    • \subpage MITKModuleManualsListPage
    • \subpage DevelopmentApplication
      • \ref mitkExtPointsIndex
    • \subpage DeploymentPage
    */ diff --git a/Documentation/Doxygen/DeveloperManual/HowTos/InteractionTestingHowTo.dox b/Documentation/Doxygen/3-DeveloperManual/HowTos/InteractionTestingHowTo.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/HowTos/InteractionTestingHowTo.dox rename to Documentation/Doxygen/3-DeveloperManual/HowTos/InteractionTestingHowTo.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/AboutTesting/AboutTestingPage.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/AboutTesting/AboutTestingPage.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/AboutTesting/AboutTestingPage.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/AboutTesting/AboutTestingPage.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/Architecture.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/Architecture.dox similarity index 95% rename from Documentation/Doxygen/DeveloperManual/Starting/Architecture.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/Architecture.dox index 46a2a38934..d499f3a0dc 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/Architecture.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/Architecture.dox @@ -1,47 +1,47 @@ /** \page Architecture The Architecture of MITK - -MITK is an open source software toolkit for medical image processing, subsequent data analysis and integration of medical hardware. -It is designed with the aim of providing a modular and heavily reusable code base to enable rapid development of new features. Following + +MITK is an open source software toolkit for medical image processing, subsequent data analysis and integration of medical hardware. +It is designed with the aim of providing a modular and heavily reusable code base to enable rapid development of new features. Following this design philosophy MITK includes many different specialized modules e.g. the Segmentation Module. -This document is aimed at giving an overview of the general structure of MITK. Furthermore it will give an introduction into the coding +This document is aimed at giving an overview of the general structure of MITK. Furthermore it will give an introduction into the coding and design concepts behind this toolkit. \section OverviewPage_DesignOverview Design Overview MITK is designed to be used as a pure software library or as a complete application framework. Thus, a user -of MITK can decide if he simply wants to add a new plug-in to the existing application framework or if he needs to implement his +of MITK can decide if he simply wants to add a new plug-in to the existing application framework or if he needs to implement his own application and wants to use MITK as a software library. Depending on the type of use MITK uses different software libraries, which is shown in the next figure for overview. \imageMacro{MitkOverview.png,"Overview of MITK",16} Like shown above, MITK uses the following libraries. These are the main libraries MITK is based on. For further functionality you can optionally include others, a list can be found \ref thirdpartylibs "here" . Based on these libraries, MITK includes the following features:
    • High level interactions with data.
    • Specialized medical imaging algorithms (e.g. segmentation)
    • Support of 3D + t data.
    • Complete application framework, expandable by plug-ins
    • Standard tools for medical imaging as default plug-ins (e.g. measurement, segmentation)
    • Many specialized module for different topics on medical imaging (e.g. diffusion imaging, image guided therapy, live image/ultrasound data processing)
    */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/FirstSteps.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/FirstSteps.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/FirstSteps.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/FirstSteps.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/MiniAppCommandLineToolHowTo.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/MiniAppCommandLineToolHowTo.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/MiniAppCommandLineToolHowTo.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/MiniAppCommandLineToolHowTo.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/images/generated_ui_tensor_reconstruction.png b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/images/generated_ui_tensor_reconstruction.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/images/generated_ui_tensor_reconstruction.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/MiniAppCommandLineTool/images/generated_ui_tensor_reconstruction.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewModule.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewModule.dox similarity index 98% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewModule.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewModule.dox index 6bc1ce3025..20c324fd0a 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewModule.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewModule.dox @@ -1,82 +1,82 @@ /** \page NewModulePage How to create a new MITK Module \section NewModulePageCreateFolder 1) Create a Folder for your Module -First, create a folder for your module within /Modules e.g. 'NewModule'. +First, create a folder for your module within /Modules e.g. 'NewModule'. You need to add the new Folder to the CMakeLists.txt in the Module directory as well as well. -Open /Modules/CMakeLists.txt, it should be pretty clear how to add the Module, just insert it into the set(module_dirs) section. +Open /Modules/CMakeLists.txt, it should be pretty clear how to add the Module, just insert it into the set(module_dirs) section. \code set(module_dirs ... NewModule ) \endcode Inside the folder create a new folder called "Testing", which will later contain the module tests. Also create subfolders for you sourceFiles, for example "NewModuleFilters" and "NewModuleSourceFiles". \section NewModulePageCreateCMakeLists 2) Create CMakeLists.txt Within your module create the following file named CMakeLists.txt with the following content: \code MITK_CREATE_MODULE(NewModule #<-- module name SUBPROJECTS INCLUDE_DIRS NewModuleFilters NewModuleServices #<-- sub-folders of module INTERNAL_INCLUDE_DIRS ${INCLUDE_DIRS_INTERNAL} DEPENDS Mitk #<-- modules on which your module depends on ) ADD_SUBDIRECTORY(Testing) #<-- Directory for tests \endcode Choose a fitting module name. This name should only contain Letters (both upper- and lowercase), no numbers, no underscores etc. This name will be used to qualify your Module within the MITK Framework, so make sure it is unique. Typically, the name will be the same as name of the Folder the Module resides in. It is good practice to create subfolders in your module to structure your classes. Make sure to include these folders in the List of subfolders, or CMake will not find the internal Files. In the DEPENDS section, you can enter the modules that your module requires to function. You will not be able to use classes from modules that are not listed here. \section NewModulePageCreatefilesdotcmake 3) Create files.cmake Next, create a new file and name it files.cmake, containing the following: \code SET(CPP_FILES NewModuleFilters/File1.cpp NewModuleFilters/File2.cpp NewModuleServices/Filter1.cpp ) \endcode Add each .cpp file you create to this file. Also, only add you .cpp files here, not the header files! -\section NewModulePageCreateTEstingEnvironment 4) Set up the Test environment +\section NewModulePageCreateTEstingEnvironment 4) Set up the Test environment We also need to set up a testing environment where you can add your tests. Inside your "Testing" Folder, create a new files.cmake containing the following: \code SET(MODULE_TESTS mitkNewModuleTest.cpp ) \endcode Also, create a new CMakeLists.text: \code MITK_CREATE_MODULE_TESTS() \endcode That's it! Enjoy your new module! After following these steps, it should look something like this: \imageMacro{NewModule.png,"Your shiny new module!",6} */ \ No newline at end of file diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewPlugin.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewPlugin.dox similarity index 97% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewPlugin.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewPlugin.dox index b5c08bcd82..2e12785039 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewPlugin.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewPlugin.dox @@ -1,97 +1,97 @@ /** \page NewPluginPage How to create a new MITK Plugin The MITK Plugin Generator is a command line tool to simplify the process of creating your own MITK project (optional) and plugins. It can either be downloaded here or used from an existing MITK build. The Plugin Generator takes the following command line arguments: \verbatim ./MitkPluginGenerator -h A CTK plugin generator for MITK (version 1.2.0) -h, --help Show this help text -o, --out-dir Output directory (default: /tmp) -l, --license Path to a file containing license information (default: :/MITKLicense.txt) -v, --vendor The vendor of the generated code (default: DKFZ, Medical and Biological Informatics) -q, --quiet Do not print additional information -y, --confirm-all Answer all questions with 'yes' -u, --check-update Check for updates and exit -n, --no-networking Disable all network requests Plugin View options -vc, --view-class The View's' class name -vn, --view-name * The View's human readable name Plugin options -ps, --plugin-symbolic-name * The plugin's symbolic name -pn, --plugin-name The plugin's human readable name Project options --project-copyright Path to a file containing copyright information (default: :/LICENSE.txt) --project-name The project name --project-app-name The application name [* - options are required] \endverbatim If a project name is provided via the --project-name argument, the new plugin will be generated as part of a new project. \section NewPluginOnly Creating a new MITK plugin Here is an example call to the Plugin Generator, creating one plugin with the symbolic name com.mycompany.myplugin and a View named My View: \verbatim ./MitkPluginGenerator --plugin-symbolic-name org.mycompany.myplugin --view-name "My View" \endverbatim If you did not already specify the final location of the plugin via the --out-dir argument, move the directory (in our example /tmp/org.mycompany.myplugin) to your existing project. Do not forget to add the plugin in your project's build system (usually in the file <your-project>/Plugins/Plugins.cmake). -\section NewPluginWithProject Creating a new MITK project +\section NewPluginWithProject Creating a new MITK project \subsection NewPluginProjectPrerequisites Prerequisites MITK-based projects created with the Plugin Generator need the same prerequisites as MITK itself. See the \ref BuildInstructionsPage for MITK for details. Here is an example call to the Plugin Generator, creating the same plugin as above but integrated in a new project: \verbatim ./MitkPluginGenerator --plugin-symbolic-name org.mycompany.myplugin --view-name "My View" --project-name "MyProject" --project-app-name "MyApp" \endverbatim The generated project is completely self-contained and can be configured via CMake immediately. When building the generated project, it will first download all required dependencies (like MITK itself). For an explanation of the project's build directory layout and how to configure MITK from your project's superbuild CMake configuration, see \ref HowToNewProject. \subsection NewPluginLimitations Limitations The Plugin Generator supports only a very limited set of possible configuration options. For more customizations of your project or plugin, you must familiarize yourself with CMake and the generated build system. Further, the generator is not able to modify existing projects, it can only create new ones. \section NewPluginBuildSystem Build system for plugins Just put new files in your plugin's \c src or \c src/internal directory and edit the \c files.cmake file there. If you have any fancy stuff like external libraries and include directories you should have a look at the CMake manual and general MITK build system documentation. \section NewPluginTroubleshooting Troubleshooting \par I get "Could not find library" messages and similar stuff when I try to start my project's executable. This is mostly due to wrong environment settings. On Windows, make sure that you use the supplied batch files to start Visual Studio or your project's executable. If you still get errors, double check the value of the PATH variable in your batch files (it must contain MITK's binary directory and paths to the ITK, VTK and Qt libraries. \par -On Linux, set your LD_LIBRARY_PATH variable accordingly. +On Linux, set your LD_LIBRARY_PATH variable accordingly. */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewView.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewView.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewView.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/NewView.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/StatemachineEditor.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/StatemachineEditor.dox similarity index 99% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/StatemachineEditor.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/StatemachineEditor.dox index 80940d4cd0..b84534a71f 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/StatemachineEditor.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/StatemachineEditor.dox @@ -1,152 +1,152 @@ /** \page StatemachineEditor How to install and use the Statemachine-Editor \tableofcontents \section StatemachineEditorOverview Overview This plug-in for Eclipse allows you to create new statemachines and change existing statemachines in an graphical editor. You can open existing statemachines from a xml file or create a new statemachine in a new xml file. This document will tell you how to install the plug-in for eclipse and how to use it. \section StatemachineEditorInstallation How to Install the Statemachine-Editor First of all you have to install Eclipse (Eclipse Classic) and the plug-in Graphical Editing Framework (GEF). Furthermore we need the packages JDOM (jdom.jar) and Java3D (vecmath.jar). -Caution: There have been problems reported with GEF runtime versions > 3.3.2. +Caution: There have been problems reported with GEF runtime versions > 3.3.2. A known working configuration is: Eclipse SDK: 3.3.1 J3D: 1.5.1 Jdom: 1.0 -GEF runtime: 3.3.2 +GEF runtime: 3.3.2 Java Runtime Environment: jre6 Now you have to unzip the file StateMachines.zip into your eclipse folder. The file is located in your SVN checkout mitk/Modules/MitkExt/Interactions. Start Eclipse and select "File" -> "Import...". \imageMacro{Import.PNG,"\b Fig.1: Import",16} In the popup window (Fig.1: Import) select the folder "Plug-in Development" and "Plug-ins and Fragments". Click "Next >". \imageMacro{Import2.PNG,"\b Fig.2: Import Plug-ins and Fragments",16} On the page "Import Plug-ins and Fragments" ( Fig.2: Import Plug-ins and Fragments) just click "Next >". \imageMacro{Import3.PNG,"\b Fig.3: Selection",16} On the page "Selection" ( Fig.3: Selection) select the "StateMachines (1.0.0)" Plug-in and click the "Add ->" button. \imageMacro{Import4.PNG,"\b Fig.4: Selection 2",16} Click "Finish" ( Fig.4: Selection 2). Now you have to make sure that the path to vecmath.jar and jdom.jar is set correctly. \imageMacro{BuildPath.PNG,"\b Fig.5: Set build path",16} You can find the build path by selecting the project in the "Package Explorer" view. Then go to "Project" -> "Properties" -> "Java Build Path" in the tab "Libraries" (as you can see in Fig.5: Set build path). Now you should be able to start a Run-time Workbench. \imageMacro{Runas.png,"\b Fig.6: Start Run-time Workbench",9} Therefore you have to press the "Run" button and select "Eclipse Application". Click "OK" (Fig.6: Start Run-time Workbench). A new Eclipse workbench opens where we can use the Statemachine-Editor. \section StatemachineEditorManual How to use the Statemachine-Editor In the Eclipse Run-time Workbench we have to create a new Java project first (Fig.7: Create a new Java project). \imageMacro{CreateJavaProject.PNG,"\b Fig.7: Create a new Java project",16} Then you can select one of the two buttons: \li \ref StatemachineEditorManual1 \li \ref StatemachineEditorManual2 \subsection StatemachineEditorManual1 New Statemachines When you press the button "New Statemachine" the following window will pop up: \imageMacro{NewStatemachine.PNG,"\b Fig.8: New Statemachine",16} Here, you have to "Browse..." for your Java-Project as your file container (Fig.8: New Statemachine). \imageMacro{NewStatemachine1.PNG,"\b Fig.9: New Statemachine 1",16} Select your Project and click "OK" (Fig.9: New Statemachine 1). \imageMacro{NewStatemachine2.PNG,"\b Fig.10: New Statemachine 2",16} As soon as you have selected a container and a File name, the "Finish" button will become enabled (Fig.10: New Statemachine 2). Attention: If the filename has already been used, you have to set another filename to enable the "Finish" button. \imageMacro{NewStatemachine3.PNG,"\b Fig.11: New Statemachine 3",16} As a last step you have to enter the location and name for the xml file to be generated (Fig.11: New Statemachine 3). If you want to have predefined events and actions, make sure the "mitkEventAndActionConstants.xml" file is in the same folder. Read on in Section \ref StatemachineEditorManual3. \subsection StatemachineEditorManual2 Statemachines from *.xml When you press the button "Statemachines from *.xml" the following window will pop up: \imageMacro{openstatemachinexml.png,"\b Fig.12: Open Statemachine from *.xml",16} Here you have to select the xml file, which contains the statemachines (Fig.12: Open Statemachine from *.xml). If you want to have predefined events and actions, make sure the "mitkEventAndActionConstants.xml" file is in the same folder. \imageMacro{specifycontainer.png,"\b Fig.13: Select container",16} Here, you have to "Browse..." for your Java-Project as your file container (Fig.13: Select container). \imageMacro{specifycontainer2.png,"\b Fig.14: Select container 1",16} Select your Project and click "OK" (Fig.14: Select container 1). \imageMacro{specifycontainer3.png,"\b Fig.15: Select container 2",16} As soon as you have selected a container, the "Finish" button will become enabled (Fig.15: Select container 2). Read on in Section \ref StatemachineEditorManual3. \subsection StatemachineEditorManual3 Work with the Editor Now your workspace looks something like this: \imageMacro{application.PNG,"\b Fig.16: Workspace",16} You can open a statemachine from the "Statemachines List" view (Fig.16: Workspace) by performing a double click on the statemachine. An editor opens and on its palette you can find different tools, such as create state or create transition. \imageMacro{openPropertiesView.PNG,"\b Fig.17: Open the properties view",16} \imageMacro{application1.PNG,"\b Fig.18: Change statename in the properties view",16} To edit the statename or state ID you have to open the "Properties" view (Fig.18: Change statename in the properties view). You will get it by "Window"->"Show View" -> "Other..." -> "General" -> "Properties" (Fig.17: Open the properties view). \imageMacro{changeEvent.PNG,"\b Fig.19: Change Event",16} \imageMacro{addAction.PNG,"\b Fig.20: Add Action",16} To change a transitions event or action you have to select the transition and open its context menu (Fig.19: Change Event, Fig.20: Add Action). -You can connect a transition to another state by drag one end of it and drop it to another state. All these changes are connected with an undo/redo +You can connect a transition to another state by drag one end of it and drop it to another state. All these changes are connected with an undo/redo controller. When you save your statemachine it will be saved as an xml file which you either have created with your new statemachine or have opened before. */ \ No newline at end of file diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/BuildPath.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/BuildPath.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/BuildPath.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/BuildPath.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/CreateJavaProject.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/CreateJavaProject.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/CreateJavaProject.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/CreateJavaProject.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import2.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import2.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import2.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import2.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import3.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import3.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import3.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import3.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import4.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import4.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import4.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Import4.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine1.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine1.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine1.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine1.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine2.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine2.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine2.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine2.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine3.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine3.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine3.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/NewStatemachine3.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Runas.png b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Runas.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Runas.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/Runas.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/addAction.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/addAction.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/addAction.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/addAction.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application1.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application1.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application1.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/application1.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/changeEvent.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/changeEvent.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/changeEvent.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/changeEvent.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openPropertiesView.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openPropertiesView.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openPropertiesView.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openPropertiesView.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openstatemachinexml.png b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openstatemachinexml.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openstatemachinexml.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/openstatemachinexml.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer.png b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer2.png b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer2.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer2.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer2.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer3.png b/Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer3.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer3.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/FirstSteps/StatemachineEditor/images/specifycontainer3.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/CMakeFAQ.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/CMakeFAQ.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/CMakeFAQ.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/CMakeFAQ.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Coding.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Coding.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Coding.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Coding.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/DirectoryStructure.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/DirectoryStructure.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/DirectoryStructure.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/DirectoryStructure.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/DocumentationExample.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/DocumentationExample.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/DocumentationExample.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/DocumentationExample.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/DocumentationGuide.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/DocumentationGuide.dox similarity index 99% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/DocumentationGuide.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/DocumentationGuide.dox index 4dc7f853c2..6ab7e3e9a8 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/DocumentationGuide.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/DocumentationGuide.dox @@ -1,85 +1,84 @@ /** \page DocumentationGuide Writing Documentation \section DocumentationGuideCodeGeneral General remarks MITK uses Doxygen for the generation of our user manual pages as well as for the generation of the on- and offline reference manuals. So on the technical side many questions can be answered by the doxygen documentation, such as the list of commands or a few basic doxygen tutorials. Therefore this document is not primarily intended as a guide to using doxygen, the doxygen manual does a much better job of that, but as a guide to use doxygen in MITK and a collection of helpful hints and advise about pittfalls. Also, of course you need to have doxygen installed to generate documentation. \section DocumentationGuideCode Documenting the source code MITK is a substantial project and encompasses many different source files by many different developers over quite a considerable timeframe. Many of them have written excellent code which can do a lot of things and is very helpful to people who might apply it in wholly unlooked for ways to completely different problems. To facilitate this sharing and reusing of ressources one first and foremost has to know what kind of ressources are already available. Few people write code in the intention for it to be difficult to be used by others, but unfortunately what might seem a very efficient and easily understandable piece of code to the author might be nigh unreadable for someone else. Very often it does not in fact matter whether the code itself is understandable, as long as it one can get the information what a function is supposed to do. While comments in the source file help a lot to gain this knowledge in can get quite tedious go through every file looking for the right tool. This is where using doxygen pays off by giving a short comment in the header file a reference manual is automatically generated. While doxygen support several different manners of documentation, the MITK documentation should keep a uniform documentation style: \warning{ Use only the \verbatim /** ... */ \endverbatim style for documentation. } In dire emergencies you may consider commenting via the /// style, others must never be used. An example: \verbatim /** \brief Brief description what the commented part does. * * More detailed description. This can be as long as you like, * whereas the brief description should never be more than one sentence. */ \endverbatim See \subpage DocumentationExample for an exemplary documentation of a class. \subsection DocumentationGuideCodeHints Helpful hints:
    • Always put comments intended for doxygen in the header files.
    \section DocumentationGuideManual Writing user manuals While the usage of your view/perspective/application might seem obvious and accessible to you, to most people it is not. Writing a good manual is key for this. It is very difficult to write a manual which is too comprehensive, most often if something can be done in a wrong way, somebody will see this as the only one. For MITK purposes you should put your documentation in BUNDLEPATH/documentation/UserManual/QmitkMyViewName.dox . Give them a unique name and remember to only use alphanumeric characters and underscores. Identifiers like "org.placeA.x" and "org.placeB.y" look identical to doxygen because it only parses the "org". Use "org_placeA_x" instead. Regarding images: Doxygen looks for images globally. To avoid confusion, include the plugin name into the image. E.g. "Checkboxes.png" is a bad name while "QmitkIGTTracking_Checkboxes.png" is a good name. Include images only via the image Macro! This way it is automatically included in the pdf export of the documentation. \verbatim // The Macro hast he following form (note the braces!): \imageMacro{imagePath, "Image Description", Image size in cm} // e.g.: \imageMacro{QmitkIGTTracking_Checkboxes.png, "Some beautiful Checkboxes!", 5} // If you must use commas in the description, escape them! \imageMacro{QmitkIGTTracking_Checkboxes.png, "Some beautiful Checkboxes\, you have never seen better ones! ", 5} \endverbatim Image size is only used for the pdf export, but images won't be displayed at all if it is missing. Maximum is 16. The nightly generated HTML documentation and the Qt Help System documentation can contain different content using the isHTML command. \subsection DocumentationGuideManualHints Helpful hints:
    • Do not use fullstops (".") in identifiers, it throws doxygen off
    • Think were your page should go in the MITK help page structure and declare it as a subpage accordingly
    • Use the imageMacro instead of the image command
    • Use structuring elements, such as sections and subsections
    • Use references to allow for fast navigation
    • Images, pictures and sketches are great, use them
    • Use visual help like remark, paragraph and warning
    • BLUEBERRY_USE_QT_HELP should be set to ON
    • The plug-in org.blueberry.ui.qt.help should be set to ON
    */ - diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/GettingToKnowMITK.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/GettingToKnowMITK.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/GettingToKnowMITK.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/GettingToKnowMITK.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/KnownProblems.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/KnownProblems.dox similarity index 87% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/KnownProblems.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/KnownProblems.dox index 52da8eddd8..34ad345fad 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/KnownProblems.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/KnownProblems.dox @@ -1,14 +1,14 @@ /** \page KnownProblemsPage Known Problems \li "Installing" MITK via cmake (or using "make install") is not yet supported. -\li Sometimes remote X sessions will display black rendering windows. It is not +\li Sometimes remote X sessions will display black rendering windows. It is not known whether this is a problem within MITK or within the X implementation. \li MITK CHILI plugin has limitations when working with DICOMDIR data sources (bug #1756) \section KnownProblemsPage_Deployment Deployment -\li CMAKE_BUILD_TYPE has to be set to Debug or Release: -For Makefile-based installers (make on Mac and Linux, nmake on Windows ) the CMAKE_BUILD_TYPE variable has to be set to Debug or Release. Otherwise the packages generated by CPack will be incomplete. +\li CMAKE_BUILD_TYPE has to be set to Debug or Release: +For Makefile-based installers (make on Mac and Linux, nmake on Windows ) the CMAKE_BUILD_TYPE variable has to be set to Debug or Release. Otherwise the packages generated by CPack will be incomplete. */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/StyleGuideAndNotes.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/StyleGuideAndNotes.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/StyleGuideAndNotes.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/StyleGuideAndNotes.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/CMakeLists.txt b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/CMakeLists.txt similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/CMakeLists.txt rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/CMakeLists.txt diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step00.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step00.dox similarity index 90% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step00.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step00.dox index 75f4cd5400..b7094eefb1 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step00.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step00.dox @@ -1,15 +1,15 @@ /** \page Step00Page MITK Tutorial - Step 0: Getting started -To build the tutorials follow the \ref BuildInstructionsPage and make sure that MITK_BUILD_EXAMPLES is checked/set to ON. +To build the tutorials follow the \ref BuildInstructionsPage and make sure that MITK_BUILD_EXAMPLES is checked/set to ON. \imageMacro{configureCMake.PNG,"",16.00} The tutorial source files can be found in the Examples\\Tutorial\\ subdirectory of the source tree. The tutorial executables are in the bin\\Release\\ or bin\\Debug\\ subdirectory (Windows) respectively the bin\\ subdirectory (Linux/Mac) of the binary tree after compilation (called MitkStepX, corresponding to the tutorial step). \ref Step01Page "[Next step]" \ref TutorialPage "[Main tutorial page]" */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox similarity index 92% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox index b7a04677ab..3d9fb0d9f7 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox @@ -1,27 +1,27 @@ /** \page Step01Page MITK Tutorial - Step 1: Displaying an image \li Path to files used in this step: \n http://mitk.org/download/tutorial-data/Pic3D.nrrd \imageMacro{step1_result.png,"",6.22} Open your IDE. All steps can be found among the listed projects. The first program shows how to display an image in a 2D view. The picture above is a screenshot of the program. The program has to be executed using the image file Pic3D.nrrd. -If you are using Visual Studio use the StartVS_release.bat in your bin\\ subdirectory to start it with all required paths set. -To set the image file path in Visual Studio, right click on "MitkStep1"-project and go to 'Properties -> Configuration Properties -> Debugging'. -Now insert the image file path to Pic3D.nrrd in the "Command Arguments" text field. +If you are using Visual Studio use the StartVS_release.bat in your bin\\ subdirectory to start it with all required paths set. +To set the image file path in Visual Studio, right click on "MitkStep1"-project and go to 'Properties -> Configuration Properties -> Debugging'. +Now insert the image file path to Pic3D.nrrd in the "Command Arguments" text field. Then right click on the "MitkStep1"-project again and select "Set as StartUp Project". Start to run the code. Use this also in the following steps. \imageMacro{configureVisualStudioProperties.png,"",11.85} The code is divided into parts I through V. First of all a DataTree has to be created. Then data has to be read from a file which afterwards has to be put into the tree. Part IV creates a window and passes the tree to it. The last part deals with some Qt-specific initialization. \include Step1.cpp \ref Step00Page "[Previous step]" \ref Step02Page "[Next step]" \ref TutorialPage "[Main tutorial page]" */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox similarity index 95% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox index f74f894583..49ee79f367 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox @@ -1,34 +1,34 @@ /** \page Step02Page MITK Tutorial - Step 2: Load one or more data sets - - + + \li \ref Step2.cpp "Step2.cpp" \n Contains the code for this example. \li Path to files used in this step: \n http://mitk.org/download/tutorial-data/Pic3D.nrrd (image) \n http://mitk.org/download/tutorial-data/lungs.vtk (surface) - \image html step2_result.png - + \image html step2_result.png + \dontinclude Step2.cpp - + This program shows how to load multiple data sets. - + A DataNodeFactory is used to produce nodes containing the data. The picture above shows the result of the program when reading both the image file and the surface file. In order to obtain the result the program has to be executed using the image file Pic3D.nrrd and the surface file lungs.vtk. The code for this example equals the code of Step 1 except for part II and part III which are changed as follows: \skipline Part II \until exit(2) \line } \line } - - - + + + \ref Step01Page "[Previous step]" \ref Step03Page "[Next step]" \ref TutorialPage "[Main tutorial page]" - + */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox similarity index 94% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox index fa6556de5e..44aedf9d86 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox @@ -1,51 +1,51 @@ /** - + \page Step03Page MITK Tutorial - Step 3: Create 3D view - + \li \ref Step3.cpp "Step3.cpp" \n Contains the code that both creates a 3D view and turns volume rendering on. \li Path to files used in this step: \n http://mitk.org/download/tutorial-data/Pic3D.nrrd (image) \n http://mitk.org/download/tutorial-data/lungs.vtk (surface) As in the previous step, one or more data sets (many images, surface and other formats) may be loaded. The difference is that they are displayed in a 3D view. -The QmitkRenderWindow is now used for displaying a 3D view, by setting the used mapper-slot to Standard3D. +The QmitkRenderWindow is now used for displaying a 3D view, by setting the used mapper-slot to Standard3D. Since volume-rendering is a (rather) slow procedure, the default is that images are not displayed in the 3D view. In Step 3a the default is kept whereas in Step 3b volume rendering is turned on. As in the previous step, to obtain the result the program has to be executed using the image file Pic3D.nrrd and the surface file lungs.vtk. \section Step3aSection Step 3a - Volume rendering turned off - + \imageMacro{step3a_result.png,"",6.22} - + \dontinclude Step3.cpp Tell the renderer to create a 3D view: - + \skipline // Use it as a 3D view! \skipline renderWindow.GetRenderer()->SetMapperID The rest of the code remains unchanged. The picture above shows the result of the program when reading both the image and the surface file. As volume rendering is off the image is not visible. - + \section Step3bSection Step 3b - Volume rendering turned on - + \imageMacro{step3b_result.png,"",6.22} - + Volume Rendering is now turned on as shown in the picture above. -\dontinclude Step3.cpp +\dontinclude Step3.cpp The property "volumerendering" has to be enabled on the node containing the image. - + \skipline Check \until node->SetProperty - + \ref Step02Page "[Previous step]" \ref Step04Page "[Next step]" \ref TutorialPage "[Main tutorial page]" - + */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox similarity index 95% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox index e90951aa98..32ec61e7c2 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox @@ -1,69 +1,69 @@ /** - + \page Step04Page MITK Tutorial - Step 4: Use several views to explore data - -\li \ref Step4.cpp "Step4.cpp"\n + +\li \ref Step4.cpp "Step4.cpp"\n Contains the code of step 4a + b. \li Path to files used in this step: \n http://mitk.org/download/tutorial-data/Pic3D.nrrd (image) \n http://mitk.org/download/tutorial-data/lungs.vtk (surface) As in Step 2 and Step 3 one or more data sets may be loaded. This now creates three views on the data. The QmitkRenderWindow is used for displaying a 3D view as in Step 3, but without volume-rendering. -Furthermore two 2D views for slicing through the data are created. +Furthermore two 2D views for slicing through the data are created. The class QmitkSliceWidget is used, which is based on the class QmitkRenderWindow, but additionally provides sliders to slice through the data. We create two instances of -QmitkSliceWidget, one for axial and one for sagittal slicing. +QmitkSliceWidget, one for axial and one for sagittal slicing. Step 4b enhances the program in that the two slices are also shown at their correct position in 3D as well as intersection-line, each in the other 2D view. As in the previous steps, to obtain the result the program has to be executed using the image file Pic3D.nrrd and the surface file lungs.vtk. \section Step4aSection Step 4a - Create axial and sagittal view \imageMacro{step4a_result.png,"",11.01} \dontinclude Step4.cpp Create a Qt horizontal box for the layout: \skipline QHBox Then create a renderwindow: \skipline QmitkRenderWindow \until SetMapperID Create a 2D view for slicing axially: \skipline view2 \until view2.SetData Then create a 2D view for slicing sagitally. \skipline view3 \until view3.SetData The toplevelWidget is now the new main widget: \skipline qtapplication \skipline toplevelWidget.show \section Step4bSection Step 4b - Display slice positions \imageMacro{step4b_result.png,"",11.01} We now want to see the position of the slice in 2D and the slice itself in 3D. Therefore it has to be added to the tree: \dontinclude Step4.cpp \skipline ds->Add(view2.GetRenderer() \skipline ds->Add(view3.GetRenderer() Slice positions are now displayed as shown in the picture. \dontinclude Step4.cpp \ref Step03Page "[Previous step]" \ref Step05Page "[Next step]" \ref TutorialPage "[Main tutorial page]" - + */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox similarity index 99% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox index 7e7a42d57a..88b5e6dfad 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox @@ -1,41 +1,40 @@ /** \page Step05Page MITK Tutorial - Step 5: Interactively add points \li \ref Step5.cpp "Step5.cpp"\n Contains the code for this step. \li Path to files used in this step: \n http://mitk.org/download/tutorial-data/Pic3D.nrrd (image) \n http://mitk.org/download/tutorial-data/lungs.vtk (surface) In addition to Step 4 where 3 views were created on the data, we now want to interactively add points. A node containing a PointSet as data is added to the data tree and a PointSetDataInteractor is associated with the node, which handles the interaction. The @em interaction @em pattern is defined in a state-machine, stored in an external XML file. Thus, we need to load a state-machine. A state machine describes interaction pattern with different states (states beeing something like "a point is selected") and transitions to these states (e.g. "select a point"). These transitions are associated with actions. In this way it is possible to model complex interaction schemes. By what these transitions and actions are triggered is described in a configuration file. It maps user events to identifiers that are used in the state machine patterns. In this way the user interaction can be changed by simply loading a different configuration file for a state machine, and the user may add points now with a right click instead of left click + SHIFT, as in our case. Therefore after loading the state machine pattern the PointSetDataInteractor is also given a event configuration file. More information about interaction in MITK can be found \ref InteractionPage "here". In order to add a point the shift key has to be pressed while left clicking in a render window. You can also move points or remove them (left click while pressing ALT). \image html step5_result.png \dontinclude Step5.cpp A PointSet and a node for it have to be created to be able to interactively adding points: \skipline mitk::PointSet \until interactor->SetDataNode(pointSetNode) \ref Step04Page "[Previous step]" \ref Step06Page "[Next step]" \ref TutorialPage "[Main tutorial page]" */ - diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox similarity index 98% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox index e7709887ea..3a2726f266 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox @@ -1,118 +1,118 @@ /** \page Step06Page MITK Tutorial - Step 6: Use an interactive region-grower The source is now split among several files: \li \ref Step6.cpp "Step6.cpp" \li \ref Step6.h "Step6.h" \li \ref Step6RegionGrowing.txx "Step6RegionGrowing.txx" \li \ref Step6RegionGrowing1.cpp "Step6RegionGrowing1.cpp" \li \ref Step6RegionGrowing2.cpp "Step6RegionGrowing2.cpp" \li \ref Step6main.cpp "Step6main.cpp" \li Path to files used in this step: \n http://mitk.org/download/tutorial-data/Pic3D.nrrd (image) In this step the program is enhanced by the possibility to start a region-grower at interactively added points. We will see how MITK images can be accessed as ITK images. We now load the image file Pic3D.nrrd only since the surface will be the result of the region-growing. Add points in the image by pressing SHIFT+left mouse key, then adjust the thresholds and press 'Start region growing'. \imageMacro{step6_result.png,"",13.55} -The class Step6 inherits from QWidget and provides methods for setting up the widgets. +The class Step6 inherits from QWidget and provides methods for setting up the widgets. Step6RegionGrowing.cpp contains a method for performing the region-growing. Step6main.cpp contains main. Like in ITK and VTK class member names start with m_ followed by the proper member name starting with a capital letter (e.g. m_Tree). Function names start with capital letters. To learn more about style conventions in MITK read \ref StyleGuideAndNotesPage "The MITK Style Guide". \dontinclude Step6.cpp The widgets are initialized as in the previous steps but with an additional QVBox for a button to start the segmentation: \skipline Create controlsParent \until hlayout->addWidget(m_LineEditThresholdMax) This creates a button to start the segmentation and its clicked() signal is connected to the method StartRegionGrowing(): \dontinclude Step6.cpp \skipline QPushButton* startButton \skipline connect(startButton \section AccessMTIKImagesAsITKImagesSection Access MITK images as ITK images ITK images are templated whereas mitk::Images are not. To use ITK filters with MITK images, we have to convert from MITK to ITK. To do so, first define an access method, which is templated as an ITK image is: \code template MyAccessMethod(itk::Image* itkImage) { ... } \endcode If you don't understand this template syntax, you should read any C++ text book. Understanding template syntax is crucial to successfully using ITK. To call this templated method with an (untemplated) mitk::Image, you can use the AccessByItk macro from mitkImageAccessByItk.h. This macro checks for the actual image type of the mitk::Image and does any neccessary conversions. Look into "Modules / Adaptor classes" for more information. \code AccessByItk(mitkImage, MyAccessMethod) \endcode \dontinclude Step6RegionGrowing.txx In this step our access method is called RegionGrowing() (defined in \ref Step6RegionGrowing.txx "Step6RegionGrowing.txx"): \skipline template \until } \until } Additionally the access function has to be instantiated for all datatypes and two/three dimensions as some compilers have memory problems without this explicit instantiation, some even need instantiations in separate files for 2D/3D: \n For 2D in \ref Step6RegionGrowing1.cpp "Step6RegionGrowing1.cpp" : \dontinclude Step6RegionGrowing1.cpp \skipline InstantiateAccessFunctionForFixedDimension_1 ... and for 3D in \ref Step6RegionGrowing2.cpp "Step6RegionGrowing2.cpp": \dontinclude Step6RegionGrowing2.cpp \skipline InstantiateAccessFunctionForFixedDimension_1 \dontinclude Step6.cpp The method StartRegionGrowing() finally calls our access method RegionGrowing(): \skipline Step6::StartRegionGrowing \until } \section ConvertingITKMITKSection Converting ITK images to MITK images and vice versa -In some cases it is useful to simply convert between ITK and MITK images. The direction ITK to MITK is easy, since mitk::Image can handle most data types. The direction MITK to ITK is more critical, since ITK images have to be instantiated with a fixed pixel type and fixed dimension at compile time. +In some cases it is useful to simply convert between ITK and MITK images. The direction ITK to MITK is easy, since mitk::Image can handle most data types. The direction MITK to ITK is more critical, since ITK images have to be instantiated with a fixed pixel type and fixed dimension at compile time. \li \code mitk::Image mitk::ImportItkImage(itk::Image<...>) \endcode \li \code mitk::CastToItkImage(mitkImage, itk::Image<...>) \endcode \section ConnectingMITKToVTKSection Connecting MITK images to VTK Images are not converted or copied: The data array is just accessed via an encapsulating VTK object. \li \code vtkImageData* mitk::Image::GetVtkImageData(int time = 0) \endcode \section SurfacesMITKToVTKSection MITK Surfaces to VTK and vice versa Again: not a conversion, just accessing. \li \code vtkPolyData* mitk::Surface::GetVtkPolyData(int time = 0) \endcode \li \code mitk::Surface::SetVtkPolyData(vtkPolyData*, int time = 0) \endcode \ref Step05Page "[Previous step]" \ref Step07Page "[Next step]" \ref TutorialPage "[Main tutorial page]" */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step07.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step07.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step07.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step07.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox similarity index 93% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox index 2e3562b004..8d55a176e5 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox @@ -1,25 +1,25 @@ /** \page Step08Page MITK Tutorial - Step 8: Use QmitkStdMultiWidget as widget \li \ref Step8.cpp "Step8.cpp"\n \li \ref Step8.h "Step8.h"\n \li \ref Step8main.cpp "Step8main.cpp"\n \li Path to files used in this step: \n http://mitk.org/download/tutorial-data/Pic3D.nrrd (image) In this step a QmitkStdMultiWidget is used. It offers four views of the data. From top left to bottom left the views are initialized as axial, sagittal and coronar. The bottom right view is initialized as 3D view. - \image html step8_result.png + \image html step8_result.png Step8 inherits from Step6. The method SetupWidgets() is changed: A QmitkStdMultiWidget is used instead of one QmitkRenderWindow and two instances of QmitkSliceWidget. - \dontinclude Step8.cpp + \dontinclude Step8.cpp \skipline Part Ia \until EnableNavigationControllerEventListening \ref Step07Page "[Previous step]" \ref Step09Page "[Next step]" */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step09.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step09.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step09.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step09.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step10.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step10.dox similarity index 99% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step10.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step10.dox index 9e1cdb4399..e863011a4d 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step10.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Step10.dox @@ -1,499 +1,499 @@ /** \page Step10Page MITK Tutorial - Step 10: Adding new Interaction \tableofcontents \section HowToUseDataInteractor Step 01 - How to use an existing DataInteractor in your Module/Plugin/... MITK provides finished DataInteractors for a variety of tasks, they can be found in Core/Code/Interactions. They can be used with state machine patterns and config files located under Core/Code/Resources/Interactions. A mitk::DataInteractor consists of four parts. The class describing the functionality and two XML files; one describes the state machine pattern, that is the workflow of an interaction and the second describes the user events which trigger an action. Lastly every mitk::DataInteractor works on a mitk::DataNode in which it stores and manipulates data. To use a mitk::DataInteractor these parts have to be brought together. ** TODO add code of mitk::PointSetDataInteractor Plugin .. This code demonstrates the use of an existing mitk::DataInteractor exemplary for the mitk::PointSetDataInteractor: First we need a mitk::DataNode in which the PointSets is stored. It has to be added to the mitk::DataStorage. \code mitk::DataNode::Pointer dataNode = mitk::DataNode::New(); GetDataStorage()->Add(dataNode.GetPointer()); \endcode Then we create an instance of a mitk::PointSetDataInteractor and load a predefined statemachine pattern as well as a configuration for it: \code m_CurrentInteractor = mitk::PointSetDataInteractor::New(); m_CurrentInteractor->LoadStateMachine("PointSet.xml"); m_CurrentInteractor->SetEventConfig("PointSetConfig.xml"); \endcode Lastly the mitk::DataNode is added to the mitk::DataInteractor \code m_CurrentInteractor->SetDataNode(dataNode); \endcode now the mitk::DataInteractor is ready for usage. \section HowToModifyInteraction Step 02 - How to modify the behaviour of a DataInteractor The behavior of a mitk::DataInteractor is determined by two aspects. One, the state machine pattern which describes the flow/order of actions that are performed. Secondly the configuration which determines which user interaction triggers the actions. \subsection ModifyDisplayInteractorBehavior How to modify the display interactor behavior Sometimes it may be desirable to change the behaviour of the mitk::DisplayInteractor which controls zooming, panning and scrolling, e.g. when a Tool is activated that reacts to the same events. Changing the behavior of the DisplayInteractor (or possibly any other EventHandler) can be achieved from anywhere in the code by requesting the InteractionEventObserver and assigning an alternative configuration to it, as demonstrated in this example: \code std::ifstream* configStream = new std::ifstream( #path to alternative configuration file# ); mitk::EventConfig newConfig(configStream); // Requesting all registered EventObservers std::list listEventObserver = GetModuleContext()->GetServiceReferences(); for (std::list::iterator it = listEventObserver.begin(); it != listEventObserver.end(); ++it) { DisplayInteractor* displayInteractor = dynamic_cast(GetModuleContext()->GetService(*it)); // filtering: only adjust the DisplayInteractor if (displayInteractor != NULL) { displayInteractor->SetEventConfig(newConfig); } } \endcode \section SectionImplementationDataInteractor How to implement a new DataInteractor This second part of the tutorial step goes beyond the activation of an interactor, that modifies data by user interaction) as shown above. It shows what needs to be implemented to add a new way of interaction within your MITK application. Please see \ref DataInteractionPage as an introduction to the MITK interaction mechanism, you may also want to read \ref DataInteractionTechnicalPage. This tutorial is structured as follows: The first section deals with config files, describing all the parameters of events and how to use them in a configuration file. In the second section the basics are described that are needed to write a state machine pattern. The last section deals with brining configuration, state machine pattern and code together and gives an exemplary implementation of a mitk::DataInteractor. \section ConfigFileDescriptionSection How to create a Config-File \subsection EventDescriptionSection Event Description Events are described by their parameters. Each event type has its own set of parameters that can be set in the configuration file. If a parameter is omitted it is set to its default value. All possible parameters are listed and described below. Event parameters are also described in the documentation of the event class itself. Mandatory for each event description is the event class and the event variant. The parameters of an event are set by attribute tags. \note Refer to \ref EventClassSection for the meaning of event class. \b Mouse \b Buttons \n mitk::InteractionEvent::MouseButtons represent the buttons. They can be used for two attributes. First the EventButton attribute which describes the button that triggered the event, this always is a single button. Secondly the ButtonState attribute that describes which buttons were pressed at the moment the event has been generated. For example assume the right mouse button and the middle mouse button are already pressed, now the left mouse button is pressed too and generates a second event, this would be described as follows: \code \endcode Note: Technically the LeftMouseButton is also pressed and should be listed in the ButtonState, but this is taken care of by the mitk::EventFactory . Key Events \n mitk::InteractionKeyEvent represents a pressed key, which key is pressed is provided with the Key attribute like this \code \endcode or \code \endcode \note Key Events do not require an explicit configuration, for all key events there exists a predefined event variant with the name 'Std' + value, that is key a is named 'StdA'. The names for special keys are listed here: \dontinclude mitkInteractionEvent.h \skipline // Special Keys \until // End special keys Modifier Keys \n mitk::InteractionEvent::ModifierKeys represent the combination of pressed modifier keys, several modifier keys pressed at the same time are denoted by listing them all separated by commas. \code \endcode \b ScrollDirection \n This attribute is unique to the mitk::MouseWheelEvent and describes the direction in which the mouse wheel is rotated. In the event description actual only the direction is provided, but the event is generated with the actual value, and this value can be retrieved from the object. \code \endcode \subsection ExamplesSection Examples Examples for key events: \code \endcode Examples for MousePress events: \code \endcode There exists a standard configuration file for the most common events called GlobalConfig.xml that can be used to as a default and can be extended by a specific definition. \subsection ParameterDescriptionSection Parameter Description It is also possible to store parameters in the config file. Those are stored using the param-tag, like this: \code \endcode Within the application these properties can then be access via a mitk::PropertyList like this: \code // sm - state machine loaded with config file example2 mitk::PropertyList::Pointer properties = GetAttributes(); std::string prop1; properties->GetStringProperty("property1",prop1); \endcode \section HowToStateMachine HowTo Write a State Machine A state machine pattern is described in a XML file. \subsection StateSection States States are described using the state-tag. Each state has to have a name. Exactly one state has to be a start state in each state machine to indicate the state in which the state machine is set when it is constructed. So a valid, but rather useless state machine would like like this: \code \endcode Optionally a state can be assigned a special mode that influences the event distribution. These modes are GRAB_INPUT , PREFER_INPUT and REGULAR (where REGULAR is default and does not need to be indicated). See \ref DataInteractionTechnicalPage_DispatcherEventDistSection for a description of these modes. Use the special modes only when necessary as they prevent other DataInteractors to receive events. \code \endcode \subsection TransitionSection Transitions Transitions are part of a state and describe all possible state switches, and are therefore important for modeling an interaction scheme. Transitions consist a part that describes the event which triggers the transition (event class and event variant) and a target which is state to which the state machine switches after executing a transition. An event class describes the event type (see mitk::InteractionEvent for the different classes) and the event variant is a specification thereof and the exact description is taken from a config file. Together they determine which event can trigger this transition. For example this state machine will switch from state A to state B when the StdMousePressPrimaryButton event (left mouse button is pressed) occurs. \subsubsection EventClassSection Event Class The event class description supports the polymorphism of the event classes. Therefore state machine patters should be written in the most general ways possible. So for a given class hierarchy like this: \dot digraph { node [shape=record, fontname=Helvetica, fontsize=10]; a [ label="{InteractionPositionEvent}"]; b [ label="{MousePressEvent}" ]; c [ label="MouseReleaseEvent" ]; d [ label="TouchEvent", style=dotted ]; a -> b; a -> c; a -> d; } \enddot in the state machine pattern the mitk::InteractionPositionEvent can be declared as event class to restrict to the events which hold a position information. The actual implementation is then given in the configuration file. In this case it allows to define events of the classes mitk::InteractionPositionEvent itself, or mitk::MousePressEvent, mitk::MouseReleaseEvent, mitk::TouchEvent. This has the advantage that the patterns remain the same no matter what input devices are used, and the state machine patterns can be configured for newly added event classes as long as they match the class hierarchy (this ensures they hold the necessary properties). \code \endcode \subsection ActionSection Actions Actions can be added to transitions and represent functions in the mitk::DataInteractor that are executed on taking a transition. The following simple state machine will listen for left mouse clicks and execute two actions (and actually never stop). \code \endcode In order to tell the mitk::DataInteractor which function to execute these actions are made known to the mitk::DataInteractor using the CONNECT_FUNCTION macro. This example assumes that there exists an ExampleInteractor which inherits from mitkDataInteractor. This class implements the functions AddPoint and CountClicks. The actions are introduced by implementing the virtual method ConnectActionsAndFunctions(): \code void mitk::ExampleInteractor::ConnectActionsAndFunctions() { CONNECT_FUNCTION("addPoint", AddPoint); CONNECT_FUNCTION("countClicks", CountClicks); } \endcode \subsection ConditionSection Conditions Conditions can be added to transitions and represent functions in the mitk::DataInteractor that are executed on taking a transition. A condition is used to determine if a following action should be executed or not. \code \endcode In order to tell the mitk::DataInteractor which function to execute these conditions are made known to the mitk::DataInteractor using the CONNECT_CONDITION macro. The ConnectActionsAndFunctions() method has to be augmented accordingly: \code void mitk::ExampleInteractor::ConnectActionsAndFunctions() { CONNECT_CONDITION("checkPoint", CheckPoint); CONNECT_FUNCTION("addPoint", AddPoint); CONNECT_FUNCTION("countClicks", CountClicks); } \endcode \section ReferenceToIncludeFiles Integration of the pattern and configuration files The usage of custom files slightly differs from the existing ones. -Custom pattern and config files have to be stored in the /Resources/Interactions directory of the Module that they were designed for. +Custom pattern and config files have to be stored in the /Resources/Interactions directory of the Module that they were designed for. When loading files from a module location into an interactor, the module has to be supplied as a parameter: - + \code m_CurrentInteractor = mitk::CustomDataInteractor::New(); m_CurrentInteractor->LoadStateMachine("CustomStateMachinePattern.xml", us::GetModuleContext()->GetModule()); m_CurrentInteractor->SetEventConfig("CustomConfig.xml", us::GetModuleContext()->GetModule()); \endcode See \ref IncludeFiles for a description. \section HowToDataInteractor Implementation of a new mitk::DataInteractor DataInteractors are to inherit from mitk::DataInteractor. Their functionality is implemented in functions that follow this interface: For Actions: \code bool SomeFunctionality(StateMachineAction* , InteractionEvent*); \endcode For Conditions: \code bool SomeFunctionality(const InteractionEvent*); \endcode Your functions are connected with actions and conditions by implementing the function ConnectActionsAndFunctions(), e.g. \code void mitk::ExampleInteractor::ConnectActionsAndFunctions() { CONNECT_CONDITION("checkPoint", CheckPoint); CONNECT_FUNCTION("addPoint", AddPoint); CONNECT_FUNCTION("enoughPoints", EnoughPoints); } \endcode Now all that is left is to write a state machine pattern and a config file as is described in the tutorials. To provide a useful example the mitk::PointSetDataInteractor is annotated with comments that describe the important parts for an implementation of a mitk::DataInteractor. This step assumes knowledge of the Interaction concept described in \ref DataInteractionPage and some background of the implementation which is described in \ref DataInteractionPageTechnical. Please refer to these pages before proceeding. Now all that is left it to write a state machine pattern and a config file as is described in the tutorials. \subsection ExampleInternalEvent Example Interactor using InternalEvent A useful tool in creating DataInteractors is mitk::InternalEvent which allows the mitk::DataInteractor to send signals on its own. The following will describe how to build a mitk::DataInteractor that allows to add points until a certain number of points is reached. The number of accepted points is provided in the config file as a parameter. So we start by writing a state machine pattern that add points until it receives an mitk::InternalEvent telling it, that enough points have been added. \code <--! dead state, nothing happens any more, once we reached this --> \endcode In our config file we set the number of maximal points to 10, and define AddPointClick as a right mouse click with the ctrl button pressed. \code \endcode The implementation is described in the following. \see Step10.h \see Step10.cpp \dontinclude Step10.h Implementation of protected functions: \skipline protected: \until virtual void ConfigurationChanged(); ConnectActionsAndFunctions - Is inherited from mitk::InteractionStateMachine, here action strings from the xml are connected with functions in the mitk::DataInteractor (as seen above). In our example this looks like this: \dontinclude Step10.cpp \skipline void mitk::ExampleInteractor::ConnectActionsAndFunctions() \until } ConfigurationChanged - Is called whenever a new configuration file is loaded (by the mitk::InteractionEventHandler super class), this function allows to implement initialization code that depends on configuration values. In our example we want to set the limit of allowed points: \dontinclude Step10.cpp \skipline void mitk::ExampleInteractor::ConfigurationChang \until } Next the actual functionality of the DataInteractor is implemented, by providing one function per action, following this prototype described before. \dontinclude Step10.h \skipline private: \until bool CheckPoint(cons \dontinclude Step10.cpp \skipline bool mitk::ExampleInteractor::AddPoint(StateM \until //- If the conditions returns false the calling transition and the included actions will not be executed. If a condition fails the event is considered as untreated, and will be offered to other Interactors. \dontinclude Step10.cpp \skipline bool mitk::ExampleInteractor::CheckPoint( \until //end Here we see an internal event used to signal that the point set reached the maximal number of allowed points. The event is created and added to the Dispatchers event queue. \dontinclude Step10.cpp \skipline // create internal \until positionEvent->GetSender( \note Internal events do not need any mapping to event variants. Their signal name is equivalent with the event variant. There are also two documented classes implementing a mitk::DataInteractor and a mitk::InteractionEventObserver which can be looked at for further understanding: \see mitk::PointSetDataInteractor \see mitk::DisplayInteractor Have fun with creating your own interaction and please think about contributing it to MITK! If you meet any difficulties during this step, don't hesitate to ask on the MITK mailing list mitk-users@lists.sourceforge.net! People there are kind and will try to help you. \ref Step09Page "[Previous step]" \ref TutorialPage "[Main tutorial page]" */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Tutorial.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Tutorial.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Tutorial.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/Tutorial.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/configureCMake.PNG b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/configureCMake.PNG similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/configureCMake.PNG rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/configureCMake.PNG diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/configureVisualStudioProperties.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/configureVisualStudioProperties.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/configureVisualStudioProperties.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/configureVisualStudioProperties.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step10_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step10_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step10_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step10_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step1_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step1_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step1_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step1_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step2_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step2_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step2_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step2_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step3a_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step3a_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step3a_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step3a_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step3b_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step3b_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step3b_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step3b_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step4a_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step4a_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step4a_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step4a_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step4b_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step4b_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step4b_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step4b_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step5_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step5_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step5_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step5_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step6_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step6_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step6_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step6_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step8_result.png b/Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step8_result.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/step8_result.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/GettingToKnow/Tutorial/step8_result.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/BuildInstructions.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/BuildInstructions.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/BuildInstructions.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/BuildInstructions.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/BuildToolkits.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/BuildToolkits.dox similarity index 83% rename from Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/BuildToolkits.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/BuildToolkits.dox index aaa15df22a..4a3d172013 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/BuildToolkits.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/BuildToolkits.dox @@ -1,31 +1,31 @@ /** \page BuildToolkits Build Toolkits If you are using the superbuild ITK and VTK will be downloaded and build during the processm by default. Only Qt will have to be build beforehand. You can of course use your own versions of ITK and VTK during the superbuild as described in BuildInstructions_Advanced_Customization . \section BuildToolkits_ITK ITK -For building ITK please refer to the ITK documentation +For building ITK please refer to the ITK documentation http://www.itk.org/Wiki/ITK_Getting_Started \section BuildToolkits_QT QT For detailed build instructions please refer to http://doc.trolltech.com/4.5/installation.html (If you are using a version other than QT 4.5 please change the link accordingly.) \section BuildToolkits_VTK VTK -For building VTK please refer to the VTK documentation +For building VTK please refer to the VTK documentation http://www.vtk.org/Wiki/VTK_Building_VTK Please note, that you have to link VTK against your QT by checking: - - \b VTK_USE_GUISUPPORT - - \b VTK_USE_QVTK + - \b VTK_USE_GUISUPPORT + - \b VTK_USE_QVTK */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/HowToNewProject-MyProjectLayout.png b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/HowToNewProject-MyProjectLayout.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/HowToNewProject-MyProjectLayout.png rename to Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/HowToNewProject-MyProjectLayout.png diff --git a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/HowToNewProject.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/HowToNewProject.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/HowToNewProject.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/HowToNewProject.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/SettingUpMITK.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/SettingUpMITK.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/SettingUpMITK.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/SettingUpMITK.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/SupportedPlatforms.md b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/SupportedPlatforms.md similarity index 99% rename from Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/SupportedPlatforms.md rename to Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/SupportedPlatforms.md index f23e467c9d..a892f50440 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/SupportedPlatforms.md +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/SupportedPlatforms.md @@ -1,52 +1,51 @@ Supported Platforms {#SupportedPlatformsPage} =================== MITK is a cross-platform framework and is available for the following platforms: - Windows - Linux/X11 - Mac OS X Supported Platforms Details --------------------------- The MITK team provides support for the most frequently used platforms and continuously runs testing procedures to ensure compatibility. Due to the large amount of possible combinations of operating systems and compiler versions, we divide platform support into two test categories (Tier 1 and Tier 2). Although MITK may be built on a range of platform-compiler combinations, only a subset of these are actively support by the MITK development team. Tier 1 Platforms ---------------- All Tier 1 platforms are continuously tested by our unit test suite and other internal testing procedures. Errors or bugs discovered in these platforms are prioritized and corrected as soon as possible. | Platform | Compilers | ----------------------------------- | ----------------------------- | Ubuntu Linux 12.04 (64-bit) | gcc as provided by Ubuntu | Microsoft Windows 7 (64-bit) | MSVC 2010 Professional SP1 (x64) | Apple OS X 10.9 "Mavericks" | LLVM-Clang 6.0 as provided by Apple (XCode) Tier 2 Platforms ---------------- Tier 2 platforms may or may not be tested on a regular basis. Some Tier 2 platforms are used by individual members of the MITK development team on a daily basis and some only receive occasional testing. While we strive to support these platforms, MITK users should note that errors may be present in released versions as well as in the current master branch. | Platform | Compilers | ---------------------------------- | ----------------------------- | Fedora 20 (64-bit) | gcc as provided by Fedora | Fedora 20 (64-bit) | Clang as provided by Fedora | Microsoft Windows 7 (32-bit) | MSVC 2012 Express (x64) | Apple OS X 10.7 "Lion" | LLVM-Clang as provided by Apple (XCode) All platforms not listed above are not officially supported by the MITK team. However, we will happily accept contributions to improve support for other platforms. - diff --git a/Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/ThirdPartyLibs.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/ThirdPartyLibs.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Starting/SettingUpMITK/ThirdPartyLibs.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/SettingUpMITK/ThirdPartyLibs.dox diff --git a/Documentation/Doxygen/DeveloperManual/Starting/Starting.dox b/Documentation/Doxygen/3-DeveloperManual/Starting/Starting.dox similarity index 97% rename from Documentation/Doxygen/DeveloperManual/Starting/Starting.dox rename to Documentation/Doxygen/3-DeveloperManual/Starting/Starting.dox index da29a9d229..8832e14bdd 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/Starting.dox +++ b/Documentation/Doxygen/3-DeveloperManual/Starting/Starting.dox @@ -1,45 +1,45 @@ /** \page StartingDevelopment Starting your MITK Development This Introduction will acquaint you with the most important work flows to get you started with your MITK Development. -First, \ref Architecture will explain the difference between the application and the toolkit. +First, \ref Architecture will explain the difference between the application and the toolkit. \ref SettingUpMITK will get you started with a working MITK Development environment. \ref GettingToKnowMITK will walk you trough the folder structure and the module and plugin system. This chapter also contains an extensive tutorial on how to work with MITK. The \ref FirstSteps section will then show you how to extend MITK for your own project.
    • \subpage Architecture
    • \subpage SettingUpMITK
      • \ref SupportedPlatformsPage
      • \ref BuildInstructionsPage
      • \ref thirdpartylibs
      • \ref HowToNewProject
    • \subpage GettingToKnowMITK
      • \ref DirectoryStructurePage
      • \ref TutorialPage
      • \ref CMAKE_FAQ
      • \ref StyleGuideAndNotesPage
      • \ref DocumentationGuide
      • \ref CodingPage
      • \ref KnownProblemsPage
    • \subpage FirstSteps
      • \ref NewPluginPage
      • \ref NewViewPage
      • \ref NewModulePage
      • \ref CMAKE_FAQ
      • \ref StatemachineEditor
    • \subpage AboutTestingPage
    */ diff --git a/Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/GeometryMigration.dox b/Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/GeometryMigration.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/GeometryMigration.dox rename to Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/GeometryMigration.dox diff --git a/Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/InteractionMigration.dox b/Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/InteractionMigration.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/InteractionMigration.dox rename to Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/InteractionMigration.dox diff --git a/Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/MITKModuleManualsList.dox b/Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/MITKModuleManualsList.dox similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/MITKModuleManualsList.dox rename to Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/MITKModuleManualsList.dox diff --git a/Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/currentClasses.png b/Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/currentClasses.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/currentClasses.png rename to Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/currentClasses.png diff --git a/Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/oldClasses.png b/Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/oldClasses.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/Toolkit/ModuleManuals/oldClasses.png rename to Documentation/Doxygen/3-DeveloperManual/Toolkit/ModuleManuals/oldClasses.png diff --git a/Documentation/Doxygen/DeveloperManual/images/MitkOverview.png b/Documentation/Doxygen/3-DeveloperManual/images/MitkOverview.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/images/MitkOverview.png rename to Documentation/Doxygen/3-DeveloperManual/images/MitkOverview.png diff --git a/Documentation/Doxygen/DeveloperManual/images/NewModule.png b/Documentation/Doxygen/3-DeveloperManual/images/NewModule.png similarity index 100% rename from Documentation/Doxygen/DeveloperManual/images/NewModule.png rename to Documentation/Doxygen/3-DeveloperManual/images/NewModule.png diff --git a/Documentation/Doxygen/API/Groups/Modules.dox b/Documentation/Doxygen/4-API/Groups.dox similarity index 100% rename from Documentation/Doxygen/API/Groups/Modules.dox rename to Documentation/Doxygen/4-API/Groups.dox diff --git a/Documentation/Doxygen/4-API/Pages.dox b/Documentation/Doxygen/4-API/Pages.dox new file mode 100644 index 0000000000..12d463fbad --- /dev/null +++ b/Documentation/Doxygen/4-API/Pages.dox @@ -0,0 +1,24 @@ +/** + + +\defgroup MITKDeprecatedAPI Deprecated + +\page deprecatedSince2012_09 Deprecated as of 2012.09 +\ingroup MITKDeprecatedAPI + +\page deprecatedSince2013_03 Deprecated as of 2013.03 +\ingroup MITKDeprecatedAPI + +\page deprecatedSince2013_06 Deprecated as of 2013.06 +\ingroup MITKDeprecatedAPI + +\page deprecatedSince2013_09 Deprecated as of 2013.09 +\ingroup MITKDeprecatedAPI + +\page deprecatedSince2014_03 Deprecated as of 2014.03 +\ingroup MITKDeprecatedAPI + +\page deprecatedSince2014_10 Deprecated as of 2014.10 +\ingroup MITKDeprecatedAPI + +*/ diff --git a/Documentation/Doxygen/MainPage.dox.in b/Documentation/Doxygen/MainPage.dox.in deleted file mode 100644 index ed93fcfd62..0000000000 --- a/Documentation/Doxygen/MainPage.dox.in +++ /dev/null @@ -1,17 +0,0 @@ -/** - -\mainpage Medical Imaging Interaction Toolkit - Documentation Portal - -\image html mitkLogo.jpg - -This page acts as a portal to the three different parts of the MITK-Documentation. - -If this is your first time around here and you are interested in learning more about MITK, please read \subpage Overview - -If you are a MITK end-user, please refer to the \subpage UserManualPortal - -If you are a developer looking for a developer's guide, please see \subpage DeveloperManualPortal - -*/ - - diff --git a/Documentation/MITKDoxygenLayout.xml b/Documentation/MITKDoxygenLayout.xml index 58486cf8e9..1ee49ec361 100644 --- a/Documentation/MITKDoxygenLayout.xml +++ b/Documentation/MITKDoxygenLayout.xml @@ -1,196 +1,197 @@ - - - + + + - - - - - - - + + - + + + + + + + diff --git a/Documentation/doxygen.conf.in b/Documentation/doxygen.conf.in index f7018c23b2..3a49fc1db7 100644 --- a/Documentation/doxygen.conf.in +++ b/Documentation/doxygen.conf.in @@ -1,2459 +1,2458 @@ # Doxyfile 1.8.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. # # All text after a single hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all text # before the first occurrence of this tag. Doxygen uses libiconv (or the iconv # built into libc) for the transcoding. See http://www.gnu.org/software/libiconv # for the list of possible encodings. # The default value is: UTF-8. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by # double-quotes, unless you are using Doxywizard) that should identify the # project for which the documentation is generated. This name is used in the # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = MITK +PROJECT_NAME = "Medical Imaging Interaction Toolkit" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version # control system is used. PROJECT_NUMBER = @MITK_VERSION_STRING@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = "Medical Imaging Interaction Toolkit" # With the PROJECT_LOGO tag one can specify an logo or icon that is included in # the documentation. The maximum height of the logo should not exceed 55 pixels # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo # to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = @MITK_DOXYGEN_OUTPUT_DIR@ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and # will distribute the generated files over these directories. Enabling this # option can be useful when feeding doxygen a huge amount of source files, where # putting all generated files in the same directory would otherwise causes # performance problems for the file system. # The default value is: NO. CREATE_SUBDIRS = NO # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. # The default value is: NO. ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, # Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. # The default value is: YES. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator that is # used to form the text in various listings. Each string in this list, if found # as the leading text of the brief description, will be stripped from the text # and the result, after processing the whole list, is used as the annotated # text. Otherwise, the brief description is used as-is. If left blank, the # following values are used ($name is automatically replaced with the name of # the entity):The $name class, The $name widget, The $name file, is, provides, # specifies, contains, represents, a, an and the. ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. # The default value is: NO. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. FULL_PATH_NAMES = NO # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which # header file to include in order to use a class. If left blank only the name of # the header file containing the class definition is used. Otherwise one should # specify the list of include paths that are normally passed to the compiler # using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the # first line (until the first dot) of a Javadoc-style comment as the brief # description. If set to NO, the Javadoc-style will behave just like regular Qt- # style comments (thus requiring an explicit @brief command for a brief # description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If # set to NO, the Qt-style will behave just like regular Qt-style comments (thus # requiring an explicit \brief command for a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this # tag to YES if you prefer the old behavior instead. # # Note that setting this tag to YES also means that rational rose comments are # not recognized any more. # The default value is: NO. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the # documentation from any documented member that it re-implements. # The default value is: YES. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a # new page for each member. If set to NO, the documentation of a member will be # part of the file/class/namespace that contains it. # The default value is: NO. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen # uses this value to replace tabs by spaces in code fragments. # Minimum value: 1, maximum value: 16, default value: 4. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that act as commands in # the documentation. An alias has the form: # name=value # For example adding # "sideeffect=@par Side Effects:\n" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading # "Side Effects:". You can put \n's in the value part of an alias to insert # newlines. ALIASES = "FIXME=\par Fix Me's:\n" \ "BlueBerry=\if BLUEBERRY" \ "endBlueBerry=\endif" \ "bundlemainpage{1}=\page \1" \ "embmainpage{1}=\page \1" \ "github{2}=\2" \ - "deprecatedSince{1}=\xrefitem deprecatedSince\1 \" Deprecated as of \1\" \"Functions deprecated as of \1\" " \ + "deprecatedSince{1}=\xrefitem deprecatedSince\1 \"\" \"Functions deprecated as of \1\" \deprecated (as of \1) " \ "minimumCMakeVersion=@CMAKE_MINIMUM_REQUIRED_VERSION@" \ "minimumQt4Version=@MITK_QT4_MINIMUM_VERSION@" \ "imageMacro{3}=\image html \1 \2 \n \image latex \1 \2 width=\3cm" \ "developersguidemainpage{1}=\page \1 " \ "usersguidemainpage{1}=\page \1 " \ "nondependentPluginLink{3}= \ref \1 \"\3\" " # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding "class=itcl::class" # will allow you to use the command class in the itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. For # instance, some of the names that are used will be different. The list of all # members will be omitted, etc. # The default value is: NO. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or # Python sources only. Doxygen will then generate output that is more tailored # for that language. For instance, namespaces will be presented as packages, # qualified scopes will look different, etc. # The default value is: NO. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources. Doxygen will then generate output that is tailored for Fortran. # The default value is: NO. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for VHDL. # The default value is: NO. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and # language is one of the parsers supported by doxygen: IDL, Java, Javascript, # C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: # FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: # Fortran. In the later case the parser tries to guess whether the code is fixed # or free formatted code, this is the default for Fortran type files), VHDL. For # instance to make doxygen treat .inc files as Fortran files (default is PHP), # and .f files as C (default is Fortran), use: inc=Fortran f=C. # # Note For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise # the files are not read by doxygen. EXTENSION_MAPPING = # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you can # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by by putting a % sign in front of the word # or globally by setting AUTOLINK_SUPPORT to NO. # The default value is: YES. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this # tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); # versus func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. # The default value is: NO. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: # http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen # will parse them like normal C++ but will assume all classes use public instead # of private inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make # doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. # The default value is: YES. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. DISTRIBUTE_GROUP_DOC = YES # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that # type (e.g. under the Public Functions section). Set it to NO to prevent # subgrouping. Alternatively, this can be done per class using the # \nosubgrouping command. # The default value is: YES. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions # are shown inside the group in which they are included (e.g. using \ingroup) # instead of on a separate page (for HTML and Man pages) or section (for LaTeX # and RTF). # # Note that this feature does not work in combination with # SEPARATE_MEMBER_PAGES. # The default value is: NO. INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions # with only public data fields or simple typedef fields will be shown inline in # the documentation of the scope in which they are defined (i.e. file, # namespace, or group documentation), provided this scope is documented. If set # to NO, structs, classes, and unions are shown on a separate page (for HTML and # Man pages) or section (for LaTeX and RTF). # The default value is: NO. INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or # enum is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically be # useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. # The default value is: NO. TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small # doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 # symbols. At the end of a run doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. # Note: This will also disable the warnings about undocumented members that are # normally produced when WARNINGS is set to YES. # The default value is: NO. EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class will # be included in the documentation. # The default value is: NO. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal # scope will be included in the documentation. # The default value is: NO. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file will be # included in the documentation. # The default value is: NO. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined # locally in source files will be included in the documentation. If set to NO # only classes defined in header files are included. Does not have any effect # for Java sources. # The default value is: YES. EXTRACT_LOCAL_CLASSES = @MITK_DOXYGEN_INTERNAL_DOCS@ # This flag is only useful for Objective-C code. When set to YES local methods, # which are defined in the implementation section but not in the interface are # included in the documentation. If set to NO only methods in the interface are # included. # The default value is: NO. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base name of # the file that contains the anonymous namespace. By default anonymous namespace # are hidden. # The default value is: NO. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO these classes will be included in the various overviews. This option has # no effect if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend # (class|struct|union) declarations. If set to NO these declarations will be # included in the documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = @MITK_DOXYGEN_HIDE_FRIEND_COMPOUNDS@ # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any # documentation blocks found inside the body of a function. If set to NO these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation that is typed after a # \internal command is included. If the tag is set to NO then the documentation # will be excluded. Set it to YES to include the internal documentation. # The default value is: NO. INTERNAL_DOCS = @MITK_DOXYGEN_INTERNAL_DOCS@ # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file # names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. # The default value is: system dependent. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. SHOW_INCLUDE_FILES = YES # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each # grouped member an include statement to the documentation, telling the reader # which file to include in order to use the member. # The default value is: NO. SHOW_GROUPED_MEMB_INC = NO # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. # The default value is: YES. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. # The default value is: NO. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief # member documentation. # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting # detailed member documentation. # The default value is: NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by # fully-qualified names, including namespaces. If set to NO, the class list will # be sorted only by class name, not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the alphabetical # list. # The default value is: NO. SORT_BY_SCOPE_NAME = YES # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the # todo list. This list is created by putting \todo commands in the # documentation. # The default value is: YES. GENERATE_TODOLIST = @MITK_DOXYGEN_GENERATE_TODOLIST@ # The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the # test list. This list is created by putting \test commands in the # documentation. # The default value is: YES. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. GENERATE_BUGLIST = @MITK_DOXYGEN_GENERATE_BUGLIST@ # The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. GENERATE_DEPRECATEDLIST= @MITK_DOXYGEN_GENERATE_DEPRECATEDLIST@ # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond # ... \endcond blocks. ENABLED_SECTIONS = @MITK_DOXYGEN_ENABLED_SECTIONS@ # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the # initial value of a variable or macro / define can have for it to appear in the # documentation. If the initializer consists of more lines than specified here # it will be hidden. Use a value of 0 to hide initializers completely. The # appearance of the value of individual variables and macros / defines can be # controlled using \showinitializer or \hideinitializer command in the # documentation regardless of this setting. # Minimum value: 0, maximum value: 10000, default value: 30. MAX_INITIALIZER_LINES = 0 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at # the bottom of the documentation of classes and structs. If set to YES the list # will mention the files that were used to generate the documentation. # The default value is: YES. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This # will remove the Files entry from the Quick Index and from the Folder Tree View # (if specified). # The default value is: YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces # page. This will remove the Namespaces entry from the Quick Index and from the # Folder Tree View (if specified). # The default value is: YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided # by doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml # will be used as the name of the layout file. # # Note that if you run doxygen from a directory containing a file called # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = @MITK_SOURCE_DIR@/Documentation/MITKDoxygenLayout.xml # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib # extension is automatically appended if omitted. This requires the bibtex tool # to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. # For LaTeX the style of the bibliography can be controlled using # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the # search path. See also \cite for info how to create references. CITE_BIB_FILES = #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to # standard output by doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. # The default value is: YES. WARNINGS = YES # If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some parameters # in a documented function, or documenting parameters that don't exist or using # markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return # value. If set to NO doxygen will only warn about wrong or incomplete parameter # documentation, but not about the absence of documentation. # The default value is: NO. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard # error (stderr). WARN_LOGFILE = #--------------------------------------------------------------------------- # Configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag is used to specify the files and/or directories that contain # documented source files. You may enter file names like myfile.cpp or # directories like /usr/src/myproject. Separate the files or directories with # spaces. # Note: If this tag is empty the current directory is searched. INPUT = @MITK_SOURCE_DIR@ \ @MITK_SOURCE_DIR@/README.md \ @MITK_BINARY_DIR@ \ @MITK_DOXYGEN_ADDITIONAL_INPUT_DIRS@ # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: http://www.gnu.org/software/libiconv) for the list of # possible encodings. # The default value is: UTF-8. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank the # following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, # *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, # *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, # *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, # *.qsf, *.as and *.js. FILE_PATTERNS = *.h \ *.cpp \ *.dox \ *.md \ *.txx \ *.tpp \ *.cxx \ *.cmake # The RECURSIVE tag can be used to specify whether or not subdirectories should # be searched for input files as well. # The default value is: NO. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = @MITK_SOURCE_DIR@/BlueBerry/Documentation/reference/api/MainPage.dox \ @MITK_SOURCE_DIR@/Utilities/IpFunc/ \ @MITK_SOURCE_DIR@/Utilities/IpSegmentation/ \ @MITK_SOURCE_DIR@/Utilities/KWStyle/ \ @MITK_SOURCE_DIR@/Utilities/Poco/ \ @MITK_SOURCE_DIR@/Utilities/qtsingleapplication/ \ @MITK_SOURCE_DIR@/Applications/PluginGenerator/ \ @MITK_SOURCE_DIR@/Core/CppMicroServices/core/doc/snippets/ \ @MITK_SOURCE_DIR@/Core/CppMicroServices/core/doc/doxygen/standalone/ \ @MITK_SOURCE_DIR@/Core/CppMicroServices/core/test/ \ @MITK_SOURCE_DIR@/Core/CppMicroServices/core/examples/ \ @MITK_SOURCE_DIR@/Core/CppMicroServices/core/src/util/jsoncpp.cpp \ @MITK_SOURCE_DIR@/Deprecated/ \ @MITK_SOURCE_DIR@/Build/ \ @MITK_SOURCE_DIR@/CMake/PackageDepends \ @MITK_SOURCE_DIR@/CMake/QBundleTemplate \ @MITK_SOURCE_DIR@/CMakeExternals \ @MITK_SOURCE_DIR@/Modules/QmitkExt/vtkQtChartHeaders/ \ + @MITK_BINARY_DIR@/Documentation/Doxygen \ @MITK_BINARY_DIR@/bin/ \ @MITK_BINARY_DIR@/PT/ \ @MITK_BINARY_DIR@/GP/ \ @MITK_BINARY_DIR@/Core/CppMicroServices/ \ @MITK_BINARY_DIR@/_CPack_Packages/ \ @MITK_DOXYGEN_ADDITIONAL_EXCLUDE_DIRS@ # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. # The default value is: NO. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* EXCLUDE_PATTERNS = README* \ moc_* \ ui_* \ qrc_* \ wrap_* \ Register* \ */files.cmake \ */.git/* \ *_p.h \ *Private.* \ + */Internal/* \ + */internal/* \ */Snippets/* \ */snippets/* \ */testing/* \ */Testing/* \ @MITK_BINARY_DIR@/*.cmake \ @MITK_DOXYGEN_EXCLUDE_PATTERNS@ # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test # # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include # command). EXAMPLE_PATH = @MITK_SOURCE_DIR@/Examples/ \ @MITK_SOURCE_DIR@/Examples/Tutorial/ \ @MITK_SOURCE_DIR@/Examples/Plugins/ \ @MITK_SOURCE_DIR@/Examples/QtFreeRender/ \ @MITK_SOURCE_DIR@/Core/Code/ \ @MITK_SOURCE_DIR@/Core/CppMicroServices/core/doc/snippets/ \ @MITK_SOURCE_DIR@/Core/CppMicroServices/core/examples/ \ @MITK_DOXYGEN_OUTPUT_DIR@/html/extension-points/html/ \ - @MITK_SOURCE_DIR@/Documentation/Snippets/ \ - @MITK_SOURCE_DIR@/Documentation/Doxygen/ExampleCode/ \ @MITK_SOURCE_DIR@/Modules/OpenCL/Documentation/doxygen/snippets/ \ @MITK_SOURCE_DIR@/Modules/IGT/Tutorial/ # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and # *.h) to filter out the source-files in the directories. If left blank all # files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude commands # irrespective of the value of the RECURSIVE tag. # The default value is: NO. EXAMPLE_RECURSIVE = YES # The IMAGE_PATH tag can be used to specify one or more files or directories # that contain images that are to be included in the documentation (see the # \image command). IMAGE_PATH = @MITK_SOURCE_DIR@/Documentation/Doxygen/ \ - @MITK_SOURCE_DIR@/Documentation/Doxygen/Modules/ \ - @MITK_SOURCE_DIR@/Documentation/Doxygen/Tutorial/ \ @MITK_SOURCE_DIR@ # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # # # # where is the value of the INPUT_FILTER tag, and is the # name of an input file. Doxygen will then use the output that the filter # program writes to standard output. If FILTER_PATTERNS is specified, this tag # will be ignored. # # Note that the filter must not add or remove lines; it is applied before the # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: pattern=filter # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how # filters are used. If the FILTER_PATTERNS tag is empty or if none of the # patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = *.cmake=@CMakeDoxygenFilter_EXECUTABLE@ # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER ) will also be used to filter the input files that are used for # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). # The default value is: NO. FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and # it is also possible to disable source filtering for a specific pattern using # *.ext= (so without naming a filter). # This tag requires that the tag FILTER_SOURCE_FILES is set to YES. FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = +USE_MDFILE_AS_MAINPAGE = README.md #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will be # generated. Documented entities will be cross-referenced with these sources. # # Note: To get rid of all source code in the generated output, make sure that # also VERBATIM_HEADERS is set to NO. # The default value is: NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. # The default value is: NO. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES then for each documented # function all documented functions referencing it will be listed. # The default value is: NO. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES, then the hyperlinks from functions in REFERENCES_RELATION and # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will # link to the documentation. # The default value is: YES. REFERENCES_LINK_SOURCE = YES # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the # source code will show a tooltip with additional information such as prototype, # brief description and links to the definition and documentation. Since this # will make the HTML file larger and loading of large files a bit slower, you # can opt to disable this feature. # The default value is: YES. # This tag requires that the tag SOURCE_BROWSER is set to YES. SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will # point to the HTML generated by the htags(1) tool instead of doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see http://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. # # To use it do the following: # - Install the latest version of global # - Enable SOURCE_BROWSER and USE_HTAGS in the config file # - Make sure the INPUT points to the root of the source tree # - Run doxygen as normal # # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # # The result: instead of the source browser generated by doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. # The default value is: YES. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all # compounds will be generated. Enable this if the project contains a lot of # classes, structs, unions or interfaces. # The default value is: YES. ALPHABETICAL_INDEX = YES # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in # which the alphabetical index list will be split. # Minimum value: 1, maximum value: 20, default value: 5. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. COLS_IN_ALPHA_INDEX = 3 # In case all classes in a project start with a common prefix, all classes will # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag # can be used to specify a prefix (or a list of prefixes) that should be ignored # while generating the index headers. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # it. # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). # The default value is: .html. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for # each generated HTML page. If the tag is left blank doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets # that doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" # for information on how to generate the default header that doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the # default header when upgrading to a newer version of doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer # that doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of # the HTML output. If left blank doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style # sheet that doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets # created by doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefor more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra stylesheet files is of importance (e.g. the last # stylesheet in the list overrules the setting of the previous ones in the # list). For an example see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = @MITK_DOXYGEN_STYLESHEET@ # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that the # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_FILES = +HTML_EXTRA_FILES = @MITK_SOURCE_DIR@/Documentation/Doxygen/mitkLogo.jpg # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the stylesheet and background images according to # this color. Hue is specified as an angle on a colorwheel, see # http://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 # gradually make the output lighter, whereas values above 100 make the output # darker. The value divided by 100 is the actual gamma applied, so 80 represents # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not # change the gamma. # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting this # to NO can help when comparing the output of multiple runs. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_DYNAMIC_SECTIONS = @MITK_DOXYGEN_HTML_DYNAMIC_SECTIONS@ # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to # such a level that at most the specified number of entries are visible (unless # a fully collapsed tree already exceeds this amount). So setting the number of # entries 1 will produce a full collapsed tree by default. 0 is a special value # representing an infinite number of entries and will result in a full expanded # tree by default. # Minimum value: 0, maximum value: 9999, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files will be # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: http://developer.apple.com/tools/xcode/), introduced with # OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a # Makefile in the HTML output directory. Running make will produce the docset in # that directory and running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at # startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_DOCSET = NO # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider # (such as a company or product suite) can be grouped. # The default value is: Doxygen generated docs. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_FEEDNAME = "Doxygen generated docs" # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_BUNDLE_ID = org.doxygen.Project # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify # the documentation publisher. This should be a reverse domain-name style # string, e.g. com.mycompany.MyDocSet.documentation. # The default value is: org.doxygen.Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. # The default value is: Publisher. # This tag requires that the tag GENERATE_DOCSET is set to YES. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop # (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on # Windows. # # The HTML Help Workshop contains a compiler that can convert all HTML output # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for # words in the documentation. The HTML workshop also contains a viewer for # compressed HTML files. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be # written to the html output directory. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler ( hhc.exe). If non-empty # doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. HHC_LOCATION = # The GENERATE_CHI flag controls if a separate .chi index file is generated ( # YES) or that it should be included in the master .chm file ( NO). # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. GENERATE_CHI = NO # The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc) # and project file content. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. CHM_INDEX_ENCODING = # The BINARY_TOC flag controls whether a binary table of contents is generated ( # YES) or a normal table of contents ( NO) in the .chm file. Furthermore it # enables the Previous and Next buttons. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members to # the table of contents of the HTML help documentation and to the tree view. # The default value is: NO. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help # (.qch) of the generated HTML documentation. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_QHP = @MITK_DOXYGEN_GENERATE_QHP@ # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify # the file name of the resulting .qch file. The path specified is relative to # the HTML output folder. # This tag requires that the tag GENERATE_QHP is set to YES. QCH_FILE = @MITK_DOXYGEN_QCH_FILE@ # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help # Project output. For more information please see Qt Help Project / Namespace # (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_NAMESPACE = "org.mitk" # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt # Help Project output. For more information please see Qt Help Project / Virtual # Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- # folders). # The default value is: doc. # This tag requires that the tag GENERATE_QHP is set to YES. QHP_VIRTUAL_FOLDER = MITK # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom # filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_NAME = # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see Qt Help Project / Custom # Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- # filters). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's filter section matches. Qt Help Project / Filter Attributes (see: # http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). # This tag requires that the tag GENERATE_QHP is set to YES. QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location of Qt's # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the # generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. QHG_LOCATION = @QT_HELPGENERATOR_EXECUTABLE@ # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be # generated, together with the HTML files, they form an Eclipse help plugin. To # install this plugin and make it available under the help contents menu in # Eclipse, the contents of the directory containing the HTML and XML files needs # to be copied into the plugins directory of eclipse. The name of the directory # within the plugins directory should be the same as the ECLIPSE_DOC_ID value. # After copying Eclipse needs to be restarted before the help appears. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_ECLIPSEHELP = NO # A unique identifier for the Eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have this # name. Each documentation set should have its own identifier. # The default value is: org.doxygen.Project. # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. ECLIPSE_DOC_ID = org.doxygen.Project # If you want full control over the layout of the generated HTML pages it might # be necessary to disable the index and replace it with your own. The # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top # of each HTML page. A value of NO enables the index and the value YES disables # it. Since the tabs in the index contain the same information as the navigation # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. If the tag # value is set to YES, a side panel will be generated containing a tree-like # index structure (just like the one that is generated for HTML Help). For this # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can # further fine-tune the look of the index. As an example, the default style # sheet generated by doxygen has an example that shows how to put an image at # the root of the tree instead of the PROJECT_NAME. Since the tree basically has # the same information as the tab index, you could consider setting # DISABLE_INDEX to YES when enabling this option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = YES # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. # Minimum value: 0, maximum value: 20, default value: 4. # This tag requires that the tag GENERATE_HTML is set to YES. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. TREEVIEW_WIDTH = 300 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful # doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are not # supported properly for IE 6.0, but are supported on all modern browsers. # # Note that when changing this option you need to delete any form_*.png files in # the HTML output directory before the changes have effect. # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see # http://www.mathjax.org) which uses client side Javascript for the rendering # instead of using prerendered bitmaps. Use this if you do not have LaTeX # installed or if you want to formulas look prettier in the HTML output. When # enabled you may also need to install MathJax separately and configure the path # to it using the MATHJAX_RELPATH option. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. USE_MATHJAX = YES # When MathJax is enabled you can set the default output format to be used for # the MathJax output. See the MathJax site (see: # http://docs.mathjax.org/en/latest/output.html) for more details. # Possible values are: HTML-CSS (which is slower, but has the best # compatibility), NativeMML (i.e. MathML) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML # output directory using the MATHJAX_RELPATH option. The destination directory # should contain the MathJax.js script. For instance, if the mathjax directory # is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax # Content Delivery Network so you can quickly see the result without installing # MathJax. However, it is strongly recommended to install a local copy of # MathJax from http://www.mathjax.org before deployment. # The default value is: http://cdn.mathjax.org/mathjax/latest. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_RELPATH = http://www.mathjax.org/mathjax # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces # of code that will be used on startup of the MathJax code. See the MathJax site # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an # example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = # When the SEARCHENGINE tag is enabled doxygen will generate a search box for # the HTML output. The underlying search engine uses javascript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. # For large projects the javascript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically # , /