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
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
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
Class diagrams
Plotter and data representation
Class diagrams
Manual Paint
Class diagrams
Threshold Image View
Class diagrams