creaMaracasVisu_lib
creaMaracasVisu documentation

General Description

First of all, creaMaracasVisu is a C++ library developed by Creatools software team and it follows the general architecture of Creatools architecture (more information in the Creatools Architecture diagram. creaMaracasVisu has as principal objective to help the visualization of medical images and the interaction with them.


 Architecture Description

The core of the library is divided into different modules, and each one provides a list of diferent functionalities that can be used in specific contexts. The principal components are the following:

- Viewers and interactors
- Contours
- Cutter Module
- Plotter and Data Representation
- Manual Paint
- Threshold Image View
- Button Container

The relationship among this set of elements is described in the following diagram :

     - Architecture Diagram


 Modules Description

In this section are presented the corresponding diagrams for each model in creaMaracasVisu library including classes, components and sequence diagrams, as well as a short description of the module of interest.


Viewers and interactors

This module provides a set of classes that manage the visualization and the interaction with images. For example, the black box ViewerNV is constructed using these classes and it provides the possibility to use different viewers depending of the context. For example, to manage an image 3D is useful to use the wxVtk3DBaseBiew and to control a 2D image it is possible to use wxVtk2DBaseView. It is important to note that these viewers make the connection between a wxWindow and a vtkRenderWindow, in order to include the world VTK in any application implemented with wxWidgets.

Another important point to keep in mind is that all the wxVtkBaseView instances have a manager of its interactor styles. These interactors describe how the events are handled and how the actual mechanism respond to the interaction callbacks. Every new instance of InteractorStyleMaracas class can be added to the wxBaseView in order to manage all the events made over an object. An example of this process is presented in the contours section.


Class diagrams

   - wxVtkViewer Class Diagram 1
         - wxVtkViewer Class Diagram 2

 

Contours

This module provides a set of tools to draw different types of contours over the viewers of the first section. In the MVC class diagram and the sequence diagram to create a new contour are explained the steps necessary to include this functionnality into a wx-vtk scene. An example of this process of creation of new contours is presented in the creaContours application. It is important to note that the contours follow as well the same interaction system of the wxVtkBaseView. It means that all the contour's controllers use the InteractorStyleMaracas system to manage the events of the mouse and the keyborard in the scene. In addition, every contour controller registered in the wxVtkBaseView with the method AddInteractorStyleMaracas of vtkInteractorStyleBaseView class (see the doxygen documentation of these classes) will react to the mouse and keyboard events, and for this reason is important to have a managing system of all the interactors in the scene.

Regarding the different actions that can be made using the contours, they react in a different way depending of the actual state of each one of them. For example, when any contour is into an editable state, the control points are visualized and can be moved, removed, etc. In brief, the actions applied to the contours (check the User Guide documentation) are described as a state diagram and every contours reacts depending of its state.


Class diagrams

          - MVC (Model View Controller)
          - Model
          - View
          - Controller

Sequence diagrams

          - To create a new contour MVC
When a new contour has to be created it is necessary to instantiate the MVC model shown in the section before. It is important to note that Contours module needs a viewer to draw and to manage the contour. For that reason, after creating the model, view and controller and their relations (Controller uses View and Model, and View has relation with the model), it is necessary to say the viewer where it will be managed. The specific methods to do this task are in the diagram.


Cutter

Component diagrams

          - Cutter module components

Class diagrams

          - Cutter module integration
          - Interface
          - Kernel


Plotter and data representation

Class diagrams

          - pPlotter Class Diagram

Manual Paint

Class diagrams

          - Manual Paint Class Diagram

Threshold Image View

Class diagrams


Button Container

Class diagrams

          - Button Container Class Diagram

Sequence diagrams

          - Create List