XStream® HDVR® SDK

<< Click to Display Table of Contents >>

Navigation:  XStream® HDVR® Distribution >

XStream® HDVR® SDK

Previous pageReturn to chapter overviewNext page

C++ C++ Java Java .NET .NET

Summary

 

There are multiple layers in the XStream® HDVR® SDK programming stack. The choice of which layer to implement is based on your architecture and product requirements. We recommend that you begin with one of the thin client APIs to better understand the higher-level components it provides, since this will aid in more efficient development.

 

Sample applications and detailed documentation are available for each API. This page provides a starting point to explore each API more thoroughly.

 

 

XStream HDVR Client SDKs

 

Thin Client APIs (Available in Java, C++, .NET (C#))

 

The thin client API provides access to the remote rendering capabilities of the XStream HDVR rendering server. The interface is a socket-based protocol for server-side loading of volumetric data, translation of user interaction into the appropriate rendering parameters, and the resulting output of images accessible through a simple frame-grabbing style interface to the remote client. The thin client API offers several higher-level components and facilitates easy integration to allow you to quickly see images in your application. This API is used to implement the functionality shown in the XStream HDVR Client-Server Workstation application.

 

For more information on the thin client APIs, see XStream HDVR Client SDKs

 

C++ Client-Server API

 

This API provides C++ interfaces for communicating with the server from the client side. This API includes rendering capability and the basic mouse adaptors that provide the default zoom, pan, rotate and navigate functionality.

 

The C++ client API is documented in this WebHelp document. HTML based Doxygen documentation for individual classes and methods is available in the software distribution under '\Documentation\C++ Thin Client.html'. The buildable source code for the server, as well as several sample applications may be found in the \Examples directory. C++ example apps are named with a _Cpp suffix. Header files to the C++ API layer may be found in '\APIs\C++\Headers'. A Visual Studio project file is provided to allow you to build and explore the code.

 

Java Thin Client API

 

All functionality supported by the C++ API is also available in a Java based API. The Java API also supports a Java Swing compatible hdrcRenderControl class, which can be added as a control to a JFrame class. This API includes rendering capability and the basic mouse adaptors that provide the default zoom, pan, rotate and navigate functionality.

 

The Java client API is documented in this WebHelp document. HTML based Doxygen documentation for individual classes and methods is available in the software distribution under '\Documentation\Java Thin Client.html'. Source code for various sample applications is provided in the \Examples directory. Java example apps are named with a _Java suffix. The Java package files are provided under \APIs\Java.

 

NET (C#) Thin Client API

 

All functionality supported by the C++ API is also available in a .NET (C#) based API. This API includes rendering capability and the basic mouse adaptors that provide the default zoom, pan, rotate and navigate functionality.

 

The Java client API is documented in this WebHelp document. HTML based Doxygen documentation for individual classes and methods is available in the software distribution under '\Documentation\Java Thin Client.html'. Source code for various sample applications is provided in the \Examples directory. .NET example apps are named with a _Net suffix. The .NET reference DLLs are provided under \APIs\DotNET directory.

 

C++ Transfer Plug-in API

 

The transfer plug-in API provides an interface that controls how data is communicated between the client and server applications. Use the plug-in API to easily implement alternative protocols to the default standard socket layer. As an example, an alternative implementation that supports SSL network protocol is included in the \Examples\Utility_SSLNetworkStreaming_Cpp. The Visual Studio project file is provided to allow you to build and explore the code.

 

For more information on the Transfer Plug-in API see Custom Network Protocol.

 

C++ Server API

 

The server API provides an interface to access the voxel data at the server level, making it unnecessary to transfer the entire dataset to the client for processing. This interface provides access to voxel memory buffers that can be used for custom segmentation or image processing algorithms.

 

Using the Server API, the default DICOM loader may be replaced with a custom DICOM loader. The Server API is further documented in “Documentation\Server API.html”. The sample Server API application can be found at 'Examples\Server_ServerApp_Cpp'

.

Using the Server API, a shared memory protocol may be implemented when deploying client and server onto the same system. An example is provided in 'Examples\Utility_SharedMemoryLoading_Cpp'.

 

It is also possible to deploy the server through a Windows Service, as is found at 'Examples\Server_ServerAppService_Cpp'. The Visual Studio project file is provided for all examples to allow you to build and explore the code.

 

Doxygen based documentation of the Server API is available from the following link: Server API Documentation.

 

C++ In-Process API

 

The In-process API provides an interface to access the rendering buffers and the lowest level of the rendering engine. The In-Process While this API is utilized by some of our hardware partners, we recommend that customers first explore the Thin Client and the Server APIs. The latter high-level layers provide rich objects that facilitate easier integration. The In-process API is documented in “Documentation\C++ In-Process.html”. The sample in-process application can be found at “Examples\Command Line (C++ In-Process)”. The Visual Studio project file is provided to allow you to build and explore the code.

 

Doxygen based documentation of the In-Process API is available from the following link: In-Process API Documentation.