next up previous contents
Next: Implementation Up: OpenVL - The Open Previous: File Input/Output and Utility   Contents


Volume Processing

The volume processing component is a framework for implementing various volume processing tasks and making them available to users for inclusion in their applications. This component lies on top of the other OpenVL components (Figure 1) presented in the earlier sections. The tasks implemented using this framework make use of the access functionality provided by OpenVL described previously.

Figure 6: Volume Processing component of OpenVL.
\includegraphics[width=320pt]{images/volp-overview.eps}

Each volume processing task has to implement an API called the Volume Processing API (Figure 6). The API is designed such that it can be used to implement any task. In Figure 6 we show some of the tasks which are implemented in OpenVL.

The Volume Processing API includes just four functions. We believe that almost any task can be implemented using this API. To allow the flexibility to pass arbitrary data to a volume processing task, we designed a special class which can store data of any type: the vlVarList class. The name is short for Variable List. Each vlVarList object contains a list of variables. Each variable is a name-value pair. That is, a name which is a string object and a value which can be of any class. This allows storing an object of any class with a name associated with it. This object can then be retrieved by simply providing the associated name.

The first function of the volume processing API using the vlVarList class is the config() function. This function returns a pointer of type vlVarList. The input variables required for the volume processing task are set by the user application using vlVarList function calls. The next function of the volume processing API is the setVolume() class. This class is used to set the volume on which the volume processing is performed. The third function is the run() function. This is called to initiate the volume processing task. The run() operation returns when the volume processing is complete. The fourth and final function, results() also makes use of the vlVarList class. This function returns a pointer of type vlVarList that holds the results of the volume processing task.

Since config() allows the user to pass any information to the volume processing task, it effectively extentds the API to accomodate different volume processing tasks. The user just needs to know the name of the variables that the task expects and pass those to the task.

All the volume processing tasks are implemented as plugins. This will be described in the next section.


next up previous contents
Next: Implementation Up: OpenVL - The Open Previous: File Input/Output and Utility   Contents
Sarang Lakare 2002-12-23