diff --git a/Documentation/Doxygen/Modules.dox b/Documentation/Doxygen/Modules.dox index 4776c93d90..c25155d7e2 100644 --- a/Documentation/Doxygen/Modules.dox +++ b/Documentation/Doxygen/Modules.dox @@ -1,115 +1,128 @@ /** \defgroup Data Data Classes \ingroup DataManagement \brief This subcategory includes the data classes, e.g., for images (mitk::Image), surfaces (mitk::Surface), vessel-trees (mitk::VesselTreeData), etc. Data access classes are only included, if there is no equivalent in itk (see \ref ProcessAndAdaptorClasses "Process and Adaptor Classes" below). */ /** \defgroup IO IO Classes \ingroup DataManagement \brief This subcategory includes the IO classes to read or write data objects. */ /** \defgroup DataStorage Data Storage Classes \ingroup DataManagement \brief This subcategory includes the classes to store and retrieve objects from the mitk::DataStorage */ /** \defgroup ProcessAdaptor Process and Adaptor Classes \anchor ProcessAndAdaptorClasses \brief This category includes process (algorithm) classes developed specifically for mitk and (mainly) adaptor classes for the integration of algorithms from other toolkits (currently vtk, itk). The itk adaptor classes are also useful for data access to mitk data objects. */ /** \defgroup Process Process Classes \ingroup ProcessAdaptor \brief This subcategory includes process (algorithm) classes developed specifically for mitk. */ /** \defgroup InteractionUndo Interaction and Undo Classes \brief This category includes classes that support the developer to create software that allows the user to interact with the data. This includes complex interactions that have multiple states (e.g., moving a handle of an active contour vs changing its local elasicity) and a concept to realize an undo/redo-mechanism. A detailed description of the rationale for these classes can be found in \ref InteractionPage. */ /** \defgroup Interaction Interaction Classes \ingroup InteractionUndo \brief This subcategory includes interaction classes (subclasses of mitk::StateMachine) that change the data according to the input of the user. For undo-support, the change is done by sending an OperationEvent to the respective data object, which changes itself accordingly. A detailed description of the rationale for these classes can be found in \ref InteractionPage. */ /** \defgroup Undo Undo Classes \ingroup InteractionUndo \brief This subcategory includes the undo/redo-specific classes. For undo-support, the change is done by sending an OperationEvent to the respective data object, which changes itself accordingly. A detailed description of the rationale for these classes can be found in \ref InteractionPage. */ /** \defgroup ToolManagerEtAl Classes related to the Segmentation bundle \brief A couple of classes related to the Segmentation bundle. See also \ref QmitkSegmentationTechnicalPage */ /** \defgroup Registration Registration \brief A couple of classes related to registration. */ /** \defgroup RigidRegistration Classes related to rigid registration \ingroup Registration \brief A couple of classes related to rigid registration. */ /** \defgroup PointBasedRegistration Classes related to point based registration \ingroup Registration \brief A couple of classes related to point based registration. */ /** \defgroup MITKPlugins MITK Plugins \brief This group includes all MITK Plugins */ + +/** + \page MITKProperties MITK Properties + + Very general information on MITK properties and an overview of some which are not specific to a certain module can be found in \ref PropertiesPage . + + For more specific information on a properties introduced by a certain module consults the appropriate module page. + + See also: + + \subpage PropertiesPage + +*/ diff --git a/Documentation/Doxygen/Properties.dox b/Documentation/Doxygen/Properties.dox new file mode 100644 index 0000000000..c1bbe26f5d --- /dev/null +++ b/Documentation/Doxygen/Properties.dox @@ -0,0 +1,184 @@ +/** +\page PropertiesPage The MITK Property Concept + +\section PropertyConcept The Concept Behind MITK Properties + +Properties belong to a datanode and contain information relevant to the handling of the node by MITK. They provide a place to store additional information which is not part of the actual data, and as such have no reason to be contained within the data/file itself, but might be needed for such things as rendering (e.g. transfer functions) or interaction (e.g. the name of the node). + +Propteries can be read an set: + +\code +mitk::ColorProperty::Pointer colorProperty = dynamic_cast(node->GetProperty("color")); + +node->SetProperty( "IsTensorVolume", mitk::BoolProperty::New( true ) ); +\endcode + +\section ListOfIndependentProperty A List Of Module Independent Properties + +\subsection FileManagement File Management +path - The physical path the file was loaded from +name - The node name in the datamanager +selected - Whether the node is selected in the datamanager + +\subsection GenericRenderingProperty Generic Rendering Properties +color - Color the surface, grey value image, whatever should be rendered in +(default is usually white). There is a special mitk::ColorProperty and you +can use the Getter/Setter methods to access it. The color is defined with +three values (RGB) in the range between 0.0 and 1.0. +\info If you are inside a mapper you can use the following code to access +the color: +\code +float rgb[3]={1.0f, 1.0f, 1.0f}; +GetColor( rgb, BaseRenderer ); +\endcode +(The BaseRenderer is usually known inside a mapper). +\endinfo +\warning +This property will not effect images if you set the property "use color" +to false. In that case a user-defined lookuptable will be used. + +in plane resample extent by geometry - Toggles: +Resampling grid corresponds to the current world geometry. This +means that the spacing of the output 2D image depends on the +currently selected world geometry, and *not* on the image itself. + +Resampling grid corresponds to the input geometry. This means that +the spacing of the output 2D image is directly derived from the +associated input image, regardless of the currently selected world +geometry. + +layer - Controls which image is considered "on top" of another. In the case +that two should inhabit the same space, the higher layer occludes lower layer. +So far it works for images and pointsets. The layer property applies only for similar datatypes. Pointsets are always rendered in front of images and the layer will not have any effect. + +levelwindow - In general, grayscale images contain values between 0 and 255. Therefore, the default window boundaries are set respectively. For displaying the image within a certain range, ie. 50 - 200, this property can be used to adjust the minimum and maximum boundary. + +LookupTable - This property contains a user defined lookuptable, which can be used to map scalar values to color values. Example: If an image contains a value of 128, in the resulting image the passed lookuptable could map this value to red (255, 0, 0). +\warning +This property will not effect images if you set the property "use color" +to true. In that case color properties and a default lookuptable are used. +Example for setting up a lookuptable in MITK: +\code +#include +#include +#include +#include + +[...] + +vtkSmartPointer vtkLUT = vtkSmartPointer::New(); +vtkLUT->SetRange(100,200); //define your table here +vtkLUT->Build(); + +//pass the table to MITK +mitk::LookupTable::Pointer mitkLookupTable = mitk::LookupTable::New(); +mitkLookupTable->SetVtkLookupTable(vtkLUT); +mitk::LookupTableProperty::Pointer LookupTableProp = mitk::LookupTableProperty::New( mitkLookupTable ); + +result->SetProperty( "LookupTable", LookupTableProp ); +result->SetBoolProperty("use color", false); +result->Update(); +\endcode + + +opacity - Alpha (or transparency) value of the node/image/surface etc.. The +range of the opacity is between 0.0 and 1.0. +\info If you are inside a mapper you can use the following code to access +the opacity: +\code +float opacity=1.0f; +GetOpacity( opacity, BaseRenderer ); +\endcode +(The BaseRenderer is usually known inside a mapper). +\endinfo + +reslice interpolation - This property takes effect in swivel mode or crosshair rotaiton only. The interpolation modes "Nearest", "Linear", and "Cubic" are available and effect the pixel outcome along the rotated plane. + +texture interpolation - This property toggles interpolation of the texture. If enabled, edges between image pixels are blurred. If disabled, edges remain sharp. + + +use color - This property toggles the use of a user-defined lookuptable +for the rendering. True: use the LUT; False: use the color propery. +Example for setting up a lookuptable in MITK: +\code +#include +#include +#include +#include + +[...] + +vtkSmartPointer vtkLUT = vtkSmartPointer::New(); +vtkLUT->SetRange(100,200); //define your table here +vtkLUT->Build(); + +//pass the table to MITK +mitk::LookupTable::Pointer mitkLookupTable = mitk::LookupTable::New(); +mitkLookupTable->SetVtkLookupTable(vtkLUT); +mitk::LookupTableProperty::Pointer LookupTableProp = mitk::LookupTableProperty::New( mitkLookupTable ); + +result->SetProperty( "LookupTable", LookupTableProp ); +result->SetBoolProperty("use color", false); +result->Update(); +\endcode + +visible - toggle node/image/surface being rendered at all + +\subsection SurfaceRenderingProperties Surface Rendering Properties + +back color - in 2D, color of the normals outside the surface +back normal lenth (px) - in 2D, length of the normals in pixels +(When decreasing it the color using the front color is shorter?) +color mode - (From VTK) Control how the scalar data is mapped to colors. By default (ColorModeToDefault), unsigned char scalars are treated as colors, and NOT mapped through the lookup table, while everything else is. Setting ColorModeToMapScalars means that all scalar data will be mapped through the lookup table. +draw normals 2d - in 2D, toggles the presence of normals +front color - in 2D, color of the normals inside the surface +front normal lenth (px) - in 2D, length of the normals in pixels +(When decreasing it the color using the back color is shorter?) +invert normals - in 2D, switch front/back normals +line width - in 2D, controls the thickness of the line where the surface +intersects the plane (and normals) +material.ambientCoefficient - in 3D ambient lighting +material.diffuseCoefficient - in 3D scattering of light +material.interpolation - Choose which interpolation algorithm to use for +surface construction +material.representation - Choose the representation to draw the mesh in +(Surface, Wireframe, Point Cloud) +material.specularCoefficient - in-/decrease non-scattered reflection +material.specularPower - control percentage of non-scattered reflection +material.wireframeLineWidth - width of the wires if wireframe representation is +scalar mode - (From VTK) Control how the filter works with scalar point data and cell attribute data. By default (ScalarModeToDefault), the filter will use point data, and if no point data is available, then cell data is used. Alternatively you can explicitly set the filter to use point data (ScalarModeToUsePointData) or cell data (ScalarModeToUseCellData). You can also choose to get the scalars from an array in point field data (ScalarModeToUsePointFieldData) or cell field data (ScalarModeToUseCellFieldData). If scalars are coming from a field data array, you must call SelectColorArray before you call GetColors. When ScalarMode is set to use Field Data (ScalarModeToFieldData), you must call SelectColorArray to choose the field data array to be used to color cells. In this mode, if the poly data has triangle strips, the field data is treated as the celldata for each mini-cell formed by a triangle in the strip rather than the entire strip. +scalar visibility - (From VTK) Turn on/off flag to control whether scalar data is used to color objects. +selected - whether the node is selected +shader - which shader to use for surface rendering, currently the options are +"fixed" and "mitkShaderLightning" + +\subsection VolumeRenderingProperties Volume Rendering Properties +TransferFunction - contains transfer function for use in coloring image +volumerendering - Should the volume be rendered or not +volumerendering configuration - Choice between Composite und MIP +volumerendering.cpu.ambient - ambient lighting +volumerendering.cpu.diffuse - in-/decrease light dispersion +volumerendering.cpu.specular - in-/decrease non-scattered reflection +volumerendering.cpu.specular.power - control percentage of non-scattered +reflection +volumerendering.gpu.ambient - same as cpu with gpu +volumerendering.gpu.diffuse - same as cpu with gpu +volumerendering.gpu.reducesliceartifacts - Reduce slice artifacts +volumerendering.gpu.specular - same as cpu with gpu +volumerendering.gpu.specular.power - same as cpu with gpu +volumerendering.gpu.usetexturecompression - use texture compression +volumerendering.ray.ambient - same as cpu with ray +volumerendering.ray.diffuse - same as cpu with ray +volumerendering.ray.specular - same as cpu with ray +volumerendering.ray.specular.power - same as cpu with ray +volumerendering.usegpu - Whether to use the GPU for rendering or not +volumerendering.uselod - Whether to use the Level Of Detail mechanism or not +volumerendering.usemip - Whether to utilize maximum intensity projection +volumerendering.useray - Whether to use raycasting or not + +\info +Uselod can be active with usegpu, usemip, useray, but any of the latter can not +be used with another one of them. +\endinfo + +*/