diff --git a/Documentation/Doxygen/DeveloperManual/DeveloperManualPortal.dox b/Documentation/Doxygen/DeveloperManual/DeveloperManualPortal.dox index 3f3aa826bb..e637f5fbe0 100644 --- a/Documentation/Doxygen/DeveloperManual/DeveloperManualPortal.dox +++ b/Documentation/Doxygen/DeveloperManual/DeveloperManualPortal.dox @@ -1,33 +1,33 @@ /** \page DeveloperManualPortal MITK: 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. */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewModule.dox b/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewModule.dox index 73f6cc9184..af09108408 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewModule.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewModule.dox @@ -1,80 +1,82 @@ /** \page NewModulePage How to create a new MITK Module \subsection CreateFolder 1) Create a Folder for your Module 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. \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". \subsection CreateCMakeLists 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. \subsection Createfilesdotcmake 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! \subsection CreateTEstingEnvironment 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: \image html NewModule.png "Your shiny new module!" + +*/ \ No newline at end of file diff --git a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewPlugin.dox b/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewPlugin.dox index d937ffa225..04a567627f 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewPlugin.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/FirstSteps/NewPlugin.dox @@ -1,97 +1,97 @@ /** -\page NewPluginPage How to create a new MITK Plug-in +\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 plug-ins. It can either be downloaded here +(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 plug-in generator for MITK (version 1.2.0) +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 -Plug-in View options +Plugin View options -vc, --view-class The View's' class name -vn, --view-name * The View's human readable name -Plug-in options +Plugin options -ps, --plugin-symbolic-name * The plugin's symbolic name - -pn, --plugin-name The plug-in's human readable 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 plug-in will be generated +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 plug-in +\section NewPluginOnly Creating a new MITK plugin -Here is an example call to the Plugin Generator, creating one plug-in with the symbolic name +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 plug-in via the --out-dir argument, move the +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 -plug-in in your project's build system (usually in the file <your-project>/Plugins/Plugins.cmake). +plugin in your project's build system (usually in the file <your-project>/Plugins/Plugins.cmake). \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 plug-in as above but integrated in a new project: +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 plug-in, you must familiarize yourself with CMake and the generated build system. +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 plug-ins +\section NewPluginBuildSystem Build system for plugins -Just put new files in your plug-in's \c src or \c src/internal directory and edit the \c files.cmake file there. +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. */ diff --git a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox index 5c91223dea..499c7078d7 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step01.dox @@ -1,22 +1,22 @@ /** \page Step01Page MITK Tutorial - Step 1: Displaying an image \image html step1_result.png Open the Tutorial by executing StartVS_release.bat. 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 snapshot of the program. +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 bin/CMakeExternals/Source/MITK-Data/Pic3D.nrrd. To set the image file path in Visual Studio, right click on "Step1"-project and go to 'Properties -> Configuration Properties -> Debugging'. Now insert the image file path in the "Command Arguments" text field. Use this also in the following steps. \image html configureVisualStudioProperties.png -The code is subdivided in parts I - 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. +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/DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox index 50119d96ac..31aa2e535d 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step02.dox @@ -1,30 +1,30 @@ /** \page Step02Page MITK Tutorial - Step 2: Load one or more data sets \image html step2_result.png \li \ref Step2.cpp "Step2.cpp" \n Contains the code for this example. \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 bin/CMakeExternals/Source/MITK-Data/Pic3D.nrrd and the surface file src/MITK/Modules/MitkExt/Testing/Data/lungs.vtk. - The code for this example equals the code of Step 1 except for part II and part III that are changed as follows: + 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/DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox index a298a0e11f..6a419a51a6 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step03.dox @@ -1,48 +1,48 @@ /** \page Step03Page MITK Tutorial - Step 3: Create 3D view -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. +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. 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 bin/CMakeExternals/Source/MITK-Data/Pic3D.nrrd and the surface file src/MITK/Modules/MitkExt/Testing/Data/lungs.vtk. \li \ref Step3.cpp "Step3.cpp" \n Contains the code that both creates a 3D view and turns volume rendering on. \section Step3aSection Step 3a - Volume rendering turned off \image html step3a_result.png \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 \image html step3b_result.png Volume Rendering is now turned on as shown in the picture above. \dontinclude Step3.cpp -The property "volumerendering" has to be turned on on the node containing the image. +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/DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox index 6696f2e96d..507e4e859b 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step04.dox @@ -1,66 +1,66 @@ /** \page Step04Page MITK Tutorial - Step 4: Use several views to explore data As in Step 2 and Step 3 one or more data sets may be loaded. -Now 3 views on the data are created. +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. 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. 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 bin/CMakeExternals/Source/MITK-Data/Pic3D.nrrd and the surface file src/MITK/Modules/MitkExt/Testing/Data/lungs.vtk. \li \ref Step4.cpp "Step4.cpp"\n Contains the code of step 4a + b. \section Step4aSection Step 4a - Create axial and sagittal view \image html step4a_result.png \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 \image html step4b_result.png 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 can be seen in the picture. +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/DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox index 70d78a97d5..c17e7c0f44 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step05.dox @@ -1,34 +1,34 @@ /** \page Step05Page MITK Tutorial - Step 5: Interactively add points - In addition to Step 4 where 3 views on the data were created we now want to interactively add points. + 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 PointSetInteractor 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. The interaction patterns defines the @em events, on which the interactor reacts (e.g., which mouse buttons are used to set a point), the @em transition to the next state (e.g., the initial may be "empty point set") and associated @a actions (e.g., add a point at the position where the mouse-click occured). 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 simultaneously to marking the point with the mouse. + In order to add a point the shift key has to be pressed simultaneously to highlight the point with the mouse. \li \ref Step5.cpp "Step5.cpp"\n Contains the code for this step. \image html step5_result.png \dontinclude Step5.cpp - A PointSet and a node for it have to be created to be able to interactively add points: + A PointSet and a node for it have to be created to be able to interactively adding points: \skipline mitk::PointSet \until "pointsetinteractor" \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/DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox index 7e1080457b..6199730d84 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step06.dox @@ -1,112 +1,112 @@ /** \page Step06Page MITK Tutorial - Step 6: Use an interactive region-grower 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 only (bin/CMakeExternals/Source/MITK-Data/Pic3D.nrrd) since the surface will be the result of the region-growing. \image html step6_result.png 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" The class Step6 inherits from QMainWindow 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) -Then a button is created to start the segmentation and its clicked() signal is connected to the method StartRegionGrowing(): +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 +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. \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/Step08.dox b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox index 21884dce4b..369b0f9a54 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step08.dox @@ -1,24 +1,24 @@ /** \page Step08Page MITK Tutorial - Step 8: Use QmitkStdMultiWidget as widget - In this step a QmitkStdMultiWidget is used. It offers four views on the data. - From top left to bottom the views are initialized as axial, sagittal and coronar. The bottom right view is initialized as 3D view. + 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 \li \ref Step8.cpp "Step8.cpp"\n \li \ref Step8.h "Step8.h"\n \li \ref Step8main.cpp "Step8main.cpp"\n 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 \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/DeveloperManual/Starting/GettingToKnow/Tutorial/Step09.dox index 616b1d1cf0..7994bf2e23 100644 --- a/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step09.dox +++ b/Documentation/Doxygen/DeveloperManual/Starting/GettingToKnow/Tutorial/Step09.dox @@ -1,78 +1,78 @@ /** \page Step09Page MITK Tutorial - Step 9: A plug-in MITK uses a very modular concept to maximize reusability and portability. A MITK application based on the BlueBerry application framework (for example the MITK Workbench) consists of several bundles (or plug-ins). A bundle can contain resources and program logic. It can also contribute so-called Views to the main application, which provide a specific user interface for controlling the bundles functions. The creation of a MITK plug-in is considerably facilitated by using the MITK PluginGenerator as described in \ref NewPluginPage . The mentioned tool was used to create a plug-in called org.mitk.example.gui.regiongrowing. -Let's first look at what files the PluginGenerator created: +Let's first take a look at which files the PluginGenerator has created: \verbatim documentation\doxygen\ modules.dox......................... Doxygen file for documenting your plug-in resources\ icon.xpm............................ The icon of your plug-in. GIMP or other programs (including your text editor) can be used to change this src\internal\ QmitkRegionGrowingView.cpp.......... The most important file, implementing behaviour QmitkRegionGrowingView.h............ Header file of the functionality QmitkRegionGrowingViewControls.ui... XML file of the Qt Designer, describes buttons, combo boxes, etc. of your controls CMakeLists.txt \...................... Build system related files for CMake files.cmake / manifest_headers.cmake................ Information about your plug-in plugin.xml ........................... BlueBerry integration \endverbatim If you are not familiar with Qt development, please look into this Digia page describing .ui files (no, forget about the please, DO it!) -The C++ files implement a subclass of QmitkAbstractView. In this special case of QmitkRegionGrowing, we added the ability to set some seed points and run a region grower. If you are interested in the concrete changes necessary to turn a freshly generated QmitkRegionGrowing into an integrated one: +The C++ files implement a subclass of QmitkAbstractView. In this special case of QmitkRegionGrowing, we added the option to set some seed points and run a region grower. If you are interested in the concrete changes necessary to turn a freshly generated QmitkRegionGrowing into an integrated one: To add a mitk::PointSet for the seed points: QmitkRegionGrowingView.h Add includes and forward declarations: \snippet QmitkRegionGrowingView.h includes Add the point set and a pointer to a QmitkPointListWidget as a private member: \snippet QmitkRegionGrowingView.h members QmitkRegionGrowingView.cpp CreateQtPartControl(): \snippet QmitkRegionGrowingView.cpp cpp-createqtpartcontrol To use the ITK region grower: QmitkRegionGrowingView.h Add the private method: \snippet QmitkRegionGrowingView.h itkimageprocessing QmitkRegionGrowingView.cpp Add includes: \snippet QmitkRegionGrowingView.cpp cpp-includes DoImageProcessing(): \snippet QmitkRegionGrowingView.cpp cpp-doimageprocessing And add the new method: \snippet QmitkRegionGrowingView.cpp cpp-itkimageaccess Have fun using MITK! If you meet any difficulties during your first steps, 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 Step08Page "[Previous step]" \ref Step10Page "[Next Step]" \ref TutorialPage "[Main tutorial page]" */ diff --git a/Documentation/Doxygen/UserManual/UserManualPortal.dox b/Documentation/Doxygen/UserManual/UserManualPortal.dox index 7cf693a74c..6ef5f72846 100644 --- a/Documentation/Doxygen/UserManual/UserManualPortal.dox +++ b/Documentation/Doxygen/UserManual/UserManualPortal.dox @@ -1,19 +1,19 @@ /** \page UserManualPortal MITK: 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. -\section UserManualPortalTopics List of topics +

UserManualPortalTopics List of topics

*/ \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.ext/documentation/UserManual/MITKUserManual.dox b/Plugins/org.mitk.gui.qt.ext/documentation/UserManual/MITKUserManual.dox index 20f6d10a85..2747edf7e9 100644 --- a/Plugins/org.mitk.gui.qt.ext/documentation/UserManual/MITKUserManual.dox +++ b/Plugins/org.mitk.gui.qt.ext/documentation/UserManual/MITKUserManual.dox @@ -1,118 +1,115 @@ /** \page MITKUserManualPage The MITK User Manual Welcome to the basic MITK user manual. This document tries to give a concise overview of the basic functions of MITK and be an comprehensible guide on using them. -Available sections: - - \ref MITKUserManualPageOverview - - \ref MITKUserManualPageUserInterface - - \ref MITKUserManualPagePerspectives +\tableofcontents \section MITKUserManualPageOverview About MITK MITK is an open-source framework that was originally developed as a common framework for Ph.D. students in the Division of Medical and Biological Informatics (MBI) at the German Cancer Research Center. MITK aims at supporting the development of leading-edge medical imaging software with a high degree of interaction. MITK re-uses virtually anything from VTK and ITK. Thus, it is not at all a competitor to VTK or ITK, but an extension, which tries to ease the combination of both and to add features not supported by VTK or ITK. Research institutes, medical professionals and companies alike can use MITK as a basic framework for their research and even commercial (thorough code research needed) software due to the BSD-like software license. Research institutes will profit from the high level of integration of ITK and VTK enhanced with data management, advanced visualization and interaction functionality in a single framework that is supported by a wide variety of researchers and developers. You will not have to reinvent the wheel over and over and can concentrate on your work. Medical Professionals will profit from MITK and the MITK applications by using its basic functionalities for research projects. But nonetheless they will be better off, unless they are programmers themselves, to cooperate with a research institute developing with MITK to get the functionalitiy they need. MITK and the MITK applications are not certified medical products and may be used in a research setting only. They must not be used in patient care. \section MITKUserManualPageUserInterface The User Interface The layout of the MITK applications is designed to give a clear distinction between the different work areas. The following figure gives an overview of the main sections of the user interface. \image html GUI_Commented.png "The Common MITK Application Graphical User Interface" The datamanager and the \ref MITKUserManualPagePerspectives have their own help sections. This document explains the use of: - The \ref MITKUserManualPageMultiWidget - The \ref MITKUserManualPageMenu - The \ref MITKUserManualPageLevelWindow - The \ref MITKUserManualPageMemoryUsage - The \ref MITKUserManualPageViews \section MITKUserManualPageMultiWidget Four Window View \subsection MITKUserManualPageMultiWidgetOverview Overview The four window view is the heart of the MITK image viewing. The standard layout is three 2D windows and one 3D window, with the axial window in the top left quarter, the sagittal window in the top right quarter, the coronal window in the lower left quarter and the 3D window in the lower right quarter. The different planes form a crosshair that can be seen in the 3D window. Once you select a point within the picture, informations about it are displayed at the bottom of the screen. \subsection MITKUserManualPageMultiWidgetNavigation Navigation Left click in any of the 2D windows centers the crosshair on that point. Pressing the right mouse button and moving the mouse zooms in and out. By scrolling with the mouse wheel you can navigate through the slices of the active window and pressing the mouse wheel while moving the mouse pans the image section. In the 3D window you can rotate the object by pressing the left mouse button and moving the mouse, zoom either with the right mouse button as in 2D or with the mouse wheel, and pan the object by moving the mouse while the mouse wheel is pressed. Placing the cursor within the 3D window and holding the "F" key allows free flight into the 3D view. \subsection MITKUserManualPageMultiWidgetCustomizingViews Customizing By moving the cursor to the upper right corner of any window you can activate the window menu. It consists of three buttons. \image html Crosshair_Modes.png "Crosshair" The crosshair button allows you toggle the crosshair, reset the view and change the behaviour of the planes. Activating either of the rotation modes allows you to rotate the planes visible in a 2D window by moving the mouse cursor close to them and click and dragging once it changes to indicate that rotation can be done. The swivel mode is recommended only for advanced users as the planes can be moved freely by clicking and dragging anywhere within a 2D window. The middle button expands the corresponding window to fullscreen within the four window view. \image html Views_Choices.png "Layout Choices" The right button allows you to choose between many different layouts of the four window view to use the one most suited to your task. \section MITKUserManualPageMenu Menu \subsection MITKUserManualPageFile File This dialog allows you to save, load and clear entire projects, this includes any nodes in the data manager. \subsection MITKUserManualPageEdit Edit This dialog supports undo and redo operations as well as the image navigator, which gives you sliders to navigate through the data quickly. \subsection MITKUserManualPageWindow Window This dialog allows you to open a new window, change between perspectives and reset your current one to default settings. If you want to use an operation of a certain perspective within another perspective the "Show View" menu allows to select a specific function that is opened and can be moved within the working areas according to your wishes. Be aware that not every function works with every perspective in a meaningful way. The Preferences dialog allows you to adjust and save your custom settings. \image html Window_Dropdown.png "Preferences" \subsection MITKUserManualPageHelp Help This dialog contains this help, the welcome screen and information about MITK. \section MITKUserManualPageLevelWindow Levelwindow Once an image is loaded the levelwindow appears to the right hand side of the four window view. With this tool you can adjust the range of grey values displayed and the gradient between them. Moving the lower boundary up results in any pixels having a value lower than that boundary to be displayed as black. Lowering the upper boundary causes all pixels having a value higher than it to be displayed as white. The pixels with a value between the lower and upper boundary are displayed in different shades of grey. This way a smaller levelwindow results in higher contrasts while cutting of the information outside its range whereas a larger levelwindow displays more information at the cost of contrast and detail. You can pick the levelwindow with the mouse to move it up and down, while moving the mouse cursor to the left or right to change its size. Picking one of the boundaries with a left click allows you to change the size symmetrically. Holding CTRL and clicking a boundary adjusts only that value. \section MITKUserManualPageMemoryUsage System Load Indicator The System Load Indicator in the lower right hand corner of the screen gives information about the memory currently required by the MITK application. Keep in mind that image processing is a highly memory intensive task and monitor the indicator to avoid your system freezing while constantly swapping to the hard drive. \section MITKUserManualPageViews Views Each solution for a specific problem that is self contained is realized as a single view. Thus you can create a workflow for your problem by combining the capabilities of different views to suit your needs. One elegant way to do this is by combining views in \ref MITKUserManualPagePerspectives. By pressing and holding the left mouse button on a views tab you can move it around to suit your needs, even out of the application window. \section MITKUserManualPagePerspectives Perspectives The different tasks that arise in medical imaging need very different approaches. To acknowledge this circumstance MITK supplies a framework that can be build uppon by very different solutions to those tasks. These solutions are called perspectives, each of them works independently of others although they might be used in sequence to achieve the solution of more difficult problems. It is possible to switch between the perspectives using the "Window"->"Open Perspective" dialog. See \ref MITKUserManualPageMenu for more information about switching perspectives. */