Computer Assited Medical Intervention Tool Kit  version 3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Modules | Classes | Enumerations

The CamiTK Core library represents the base of CamiTK. More...

+ Collaboration diagram for Core:

Modules

 Action
 The CamiTK Core Action structure.
 
 Application
 The CamiTK Core Application structure.
 
 Component
 The CamiTK Core Component structure.
 
 Utils
 Some useful tools of CamiTK.
 
 Viewer
 The CamiTK Core Viewer structure.
 

Classes

class  camitk::Core
 Core class specifies the basic static information for the CamiTK API. More...
 
class  camitk::ExtensionManager
 This class is used to manage all plugins loaded by the application. More...
 
class  camitk::HistoryComponent
 HistoryComponent class describes the component information (name, type) stored in the history. More...
 
class  camitk::HistoryItem
 HistoryItem class describes the entry of an action used in a pipeline, in the history. More...
 

Enumerations

enum  
 
enum  camitk::ExtensionManager::ExtensionType { camitk::ExtensionManager::ACTION, camitk::ExtensionManager::COMPONENT, camitk::ExtensionManager::APPLICATION, camitk::ExtensionManager::VIEWER }
 describes the CamiTK Extension Type (Action, Component, Application...). More...
 
enum  camitk::HistoryComponent::Type { camitk::HistoryComponent::IMAGE_COMPONENT, camitk::HistoryComponent::MESH_COMPONENT, camitk::HistoryComponent::OTHER }
 The different Type (of representation) of the associated Component. More...
 

Detailed Description

The CamiTK Core library represents the base of CamiTK.

CamiTK core allows extensions to communicate and works together, for this it's the base of CamiTK and any extension using CamiTK requires the CamiTK Core library.

CamiTKCore.png
The CamiTK 'roulette', the core and some extensions

Core Architecture

CamiTK core architecture follows the Model-View-Presenter (MVP) design-pattern. It helps dividing the logic in two parts : domain logic (data structures and algorithms) and application logic (the Model, GUI aspects to present and interact with the domain logic).

CamiTK follows the Components Based Software Engineering (CBSE) principles. Each new functionality to the framework is a new module represented as a dynamic library (.dll on windows, .so on Linux systems). These principles guarantee CamiTK to be higly modular and easier to maintain. CamiTK is provided with its core and basic modules (to handle 2D and 3D images using VTK for instance). You can easily add new modules to the framework or create new camitk-application.

camitk_service_layer_1.png
The service layer

To do so, 'viewers' (application logic modules) are used to present and interact with the domain logic : the 'components' (the data logic, the data structures) and the 'actions' (the processing logic, the algorithms to be used on these components). In order to easily glue together all this modules CamiTK uses a Service Layer Pattern. This service layer can be seen as a contract from the viewers consumers of services provided by the 'components' and 'actions'. The viewers interact with the components without knowing exactly which kind of data it represents.

See also
group::group_sdk_libraries_core_viewer

Enumeration Type Documentation

anonymous enum

describes the CamiTK Extension Type (Action, Component, Application...).

CamiTK follows Component-Based programming architecture. The Service Layer defines four types of extensions.

Enumerator
ACTION 

Action extensions: manages the processing logic.

COMPONENT 

Component extensions: manages the data logic.

APPLICATION 

MainWindow extensions: manages the application logic.

VIEWER 

Viewer extensions: manages the presentation and user interaction logic.

The different Type (of representation) of the associated Component.

Use getType() to get the information about a specific HistoryComponent.

Note
The type is highly linked to Component::Representation information :
  • ImageComponent instances have subcomponents of representation SLICE.
  • MeshComponent instances have a representation of type GEOMETRY.
  • Other components have no representation (NO_REPRESENTATION), and are thus of type OTHER.
As for Component::Representation the HistoryComponent type cannot be NULL : if a Component has no representation, then he is of type OTHER
Enumerator
IMAGE_COMPONENT 

this Component represents a volumic image and its subcomponents can be displayed as slices.

MESH_COMPONENT 

this Component represent a 3D mesh, it has a 3D representation which can be displayed in the 3D viewer.

OTHER 

this Component has no defined representation.