Fovia's C++ Client/Server API
Public Member Functions | List of all members
IRenderEngineContext Struct Referenceabstract
Inheritance diagram for IRenderEngineContext:
IRenderParamsReceiver IRoot

Public Member Functions

virtual signed int ApplyVolumetricShadowMap (IVolumeShadowContext *pShadow)=0
 
virtual signed int AskInterface (const BGUID *piid, IRoot **ppr)=0
 
virtual signed int CheckChannel ()=0
 
virtual signed int DecRef ()=0
 
virtual signed int FastSwap (IVolumeDataContext *pData, IOctreeContext *pOctree)=0
 
virtual signed int FindPath (VECTOR3D **arrPath, unsigned int *numPathSteps, VECTOR3D *pStart, VECTOR3D *pFinish, FIND_PATH_PARAMS *pParams, IAllocator *pAlloc)=0
 
virtual signed int FinishJobFindPath (VECTOR3D **arrPath, unsigned int *numPathSteps, IAllocator *pAlloc, signed long long jobID)=0
 
virtual signed int GetAdaptiveJPEGStatus (signed int *status)=0
 
virtual signed int GetCurvedMPRPath (MATRIX44D **ppPath, unsigned int *pathLen)=0
 
virtual signed int GetCurvedReformat (IVolumeDataContext **ppData, const unsigned int numProjectionPlanesPerSlice, const unsigned int numSlices, const unsigned int ppWidth, const unsigned int ppHeight, const unsigned int measurementSlice, const float Zoom, MATRIX44D **arrProjPlanes, const ENUM_CURVED_MPR_TYPE type)=0
 
virtual signed int GetCurvedReformatEx (IVolumeDataContext **ppData, const signed int bCreateOctree, IOctreeContext **ppOctree, const ENUM_SMOOTH_PARAM octreeSmoothParam, const unsigned int numProjectionPlanesPerSlice, const unsigned int numSlices, const unsigned int ppWidth, const unsigned int ppHeight, const unsigned int measurementSlice, const float Zoom, MATRIX44D **arrProjPlanes, const ENUM_CURVED_MPR_TYPE type)=0
 
virtual signed int GetFramesPerPhase (unsigned int *pFrames)=0
 
virtual signed int GetID (signed long long *pID)=0
 
virtual signed int GetImageAllocator (IAllocator **ppAlloc)=0
 
virtual signed int GetMandibleTrace (VECTOR3D *left, VECTOR3D *right, VECTOR3D *front, unsigned int *numPoints, VECTOR3D *points, MATRIX44D *projectionPlane, float *zoom, double *slabThickness)=0
 
virtual signed int GetOctreeContext (IOctreeContext **pOctree)=0
 
virtual signed int GetPointVisibility (VECTOR3D *vtr, POINTVISIBLEINFO *pvi, const unsigned int Num)=0
 
virtual signed int GetRenderEngineContext (IRenderEngineContext **ppContext)=0
 
virtual signed int GetRenderParams (RENDER_PARAMS *pParams)=0
 
virtual signed int GetRenderParamsCached (RENDER_PARAMS *pParams)=0
 
virtual signed int GetRenderParamsEx (RENDER_PARAMS *pParams, const signed int bIncludeQueuedParams)=0
 
virtual signed int GetServerContext (IServerContext **ppServer)=0
 
virtual signed int GetTransferFunction (const unsigned int index, RENDER_RANGE_PARAMS *pParams)=0
 
virtual signed int GetTransferFunctionCount (unsigned int *numTFs)=0
 
virtual signed int GetVolumeDataContext (IVolumeDataContext **ppData)=0
 
virtual signed int IncRef ()=0
 
virtual signed int IsRenderingFinished ()=0
 
virtual signed int ProjectPoint (VECTOR3D *vtx, POINT *pt, const unsigned int Num)=0
 
virtual signed int ProjectVolumetricShadow ()=0
 
virtual signed int ReleaseSessionResources ()=0
 
virtual signed int Render (VOLVISIMAGE *pImReq, VOLVISIMAGE *pImRes)=0
 
virtual signed int RenderFinal ()=0
 
virtual signed int RenderFinalEx (const signed int bNotifyListeners)=0
 
virtual signed int RenderFinalEx2 (const signed int bIgnoreParams, const ENUM_RENDER_PARAMS_MASK paramsToIgnore)=0
 
virtual signed int RenderFinalEx3 (const signed int bNotifyListeners, const signed int bIgnoreParams, const ENUM_RENDER_PARAMS_MASK paramsToIgnore)=0
 
virtual signed int RenderShadowLight ()=0
 
virtual signed int RenderStreamed (VOLVISIMAGE *pPrevImage, RENDER_PARAMS *pNextImageParams, VOLVISIMAGE *pNextImage)=0
 
virtual signed int RenderStreamedEx (VOLVISIMAGE *pPrevImage, RENDER_PARAMS *pNextImageParams, VOLVISIMAGE *pNextImage, const signed int bGetFinishedFrame)=0
 
virtual signed int RenderStreamedEx2 (VOLVISIMAGE *pPrevImage, RENDER_PARAMS *pNextImageParams, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, VOLVISIMAGE *pNextImage, const signed int bGetFinishedFrame)=0
 
virtual signed int RenderStreamedEx3 (VOLVISIMAGE *pPrevImage, RENDER_PARAMS *pNextImageParams, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, const int TFsToSet, RENDER_RANGE_PARAMS **rrps, VOLVISIMAGE *pNextImage, const signed int bGetFinishedFrame)=0
 
virtual signed int RenderStreamedEx4 (VOLVISIMAGE *pPrevImage, RENDER_PARAMS *pNextImageParams, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, signed long long *TFsToSet, RENDER_RANGE_PARAMS **rrps, VOLVISIMAGE *pNextImage, const signed int bGetFinishedFrame)=0
 
virtual signed int RenderStreamedStereo (VOLVISIMAGE *pPrevImage, VOLVISIMAGE *pPrevImage2, RENDER_PARAMS *pNextImageParams, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, signed long long *TFsToSet, RENDER_RANGE_PARAMS **rrps, VOLVISIMAGE *pNextImage, const signed int bGetFinishedFrame)=0
 
virtual signed int SetAdaptiveJPEGParameters (ADAPTIVEJPEGPARAMS *params)=0
 
virtual signed int SetAdaptiveJPEGStatus (signed int status)=0
 
virtual signed int SetAutonavigating (const signed int bNavigating, const double speed)=0
 
virtual signed int SetCurvedMPRPath (const unsigned int numProjPlanes, MATRIX44D *arrProjPlanes, const ENUM_CURVED_MPR_TYPE type)=0
 
virtual signed int SetFastPolygonsEnabled (signed int bEnabled)=0
 
virtual signed int SetFramesPerPhase (const unsigned int frames)=0
 
virtual signed int SetImageAllocator (IAllocator *pAlloc)=0
 
virtual signed int SetPhase (const unsigned int phase)=0
 
virtual signed int SetPolygonCrossSectionLineParameters (double width, COLOR_RGBA color)=0
 
virtual signed int SetRenderParams (RENDER_PARAMS *pRP)=0
 
virtual signed int SetRenderParamsEx (RENDER_PARAMS *pRP, const signed int bNotifyLinked)=0
 
virtual signed int SetRenderParamsEx2 (RENDER_PARAMS *pRP, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices)=0
 
virtual signed int SetRenderParamsEx3 (RENDER_PARAMS *pRP, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, const signed int bNotifyLinked)=0
 
virtual signed int SetRenderParamsEx4 (RENDER_PARAMS *pRP, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, const int TFsToSet, RENDER_RANGE_PARAMS **rrps)=0
 
virtual signed int SetRenderParamsEx5 (RENDER_PARAMS *pRP, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, signed long long *TFsToSet, RENDER_RANGE_PARAMS **rrps)=0
 
virtual signed int SetRenderParamsRenderAndSendPrevFrame (const unsigned long long imgID, VOLVISIMAGE *imRes, RENDER_PARAMS *rp, VOLVISIMAGE *imReq)=0
 
virtual signed int SetRenderParamsRenderAndSendPrevFrameEx (const unsigned long long imgID, VOLVISIMAGE *imRes, RENDER_PARAMS *rp, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, VOLVISIMAGE *imReq)=0
 
virtual signed int SetRenderParamsRenderAndSendPrevFrameEx2 (const unsigned long long imgID, VOLVISIMAGE *imRes, RENDER_PARAMS *rp, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, const int TFsToSet, RENDER_RANGE_PARAMS **rrps, VOLVISIMAGE *imReq)=0
 
virtual signed int SetRenderParamsRenderAndSendPrevFrameEx3 (const unsigned long long imgID, VOLVISIMAGE *imRes, RENDER_PARAMS *rp, const unsigned int numVertexCallLists, IVertexCallListContext **arrVertices, signed long long *TFsToSet, RENDER_RANGE_PARAMS **rrps, VOLVISIMAGE *imReq)=0
 
virtual signed int SetRenderParamsRenderRead (RENDER_PARAMS *rp, VOLVISIMAGE *imReq, VOLVISIMAGE *imRes)=0
 
virtual signed int SetRenderParamsRenderReadStereo (RENDER_PARAMS *rp, VOLVISIMAGE *imReq, VOLVISIMAGE *imRes, VOLVISIMAGE *imRes2)=0
 
virtual signed int SetSegmentationBoundaries (unsigned long long *masks)=0
 
virtual signed int SetTransferFunction (const unsigned int index, RENDER_RANGE_PARAMS *arrParams)=0
 
virtual signed int SetVertexColorMapTransferFunction (RENDER_RANGE_PARAMS *rrp)=0
 
virtual signed int SetViewMode (const ENUM_VIEW_MODE mode)=0
 
virtual signed int SetVolumeData (IVolumeDataContext *pData, IOctreeContext *pOctree)=0
 
virtual signed int SetVolumeData4D (IVolumeDataContext **arrData, IOctreeContext **arrOctrees, const unsigned int numVolumes)=0
 
virtual signed int ShootRay (POINT *pt, RAYSTOPINFO *rsi, const unsigned int Num)=0
 
virtual signed int ShootRayEx (POINT *pt, VECTOR3D *start, VECTOR3D *direction, double percent, RAYSTOPINFO *rsi, signed int Num)=0
 
virtual signed int ShootRayFast (POINT *pt, RAYSTOPINFO *rsi, const unsigned int Num)=0
 
virtual signed int ShootRayGetWall (POINT *pt, RAYWALLINFO *rsi, const unsigned int Num)=0
 
virtual signed int StartJobFindPath (signed long long *jobID, VECTOR3D *pStart, VECTOR3D *pFinish, FIND_PATH_PARAMS *pParams)=0
 
virtual signed int WaitForPrevRender (unsigned long long *imgID)=0
 
- Public Member Functions inherited from IRoot
template<class T >
signed int AskInterface (T **pp)
 

Detailed Description

Class that abstracts a render engine. Generally, if you simply wish to interact with a volume in a window on the screen, it will be much more desireable to use an IRenderQueue to handle this type of interation. This object is lower level and acts as more of a frame grabber. You can set rendering parameters and request frames. No attention is paid to network latency or bandwidth.

This object is created by IServerContext::CreateRenderEngine().

Member Function Documentation

virtual signed int IRenderEngineContext::AskInterface ( const BGUID piid,
IRoot **  ppr 
)
pure virtual

Queries this object to see if the interface piid is supported and returns the result in ppr.

Parameters
piidThe BGUID of the requested interface.
pprThe address of an IRoot pointer which will receive the new interface.
Returns
S_OK if the interface is supported. E_FAIL if it is not.

Implements IRoot.

virtual signed int IRenderEngineContext::CheckChannel ( )
pure virtual

Does a simple test of the network channel to "ping" the server.

Returns
S_OK if successful
virtual signed int IRenderEngineContext::DecRef ( )
pure virtual

Decreases the reference count on this object by 1. If the reference count reaches 0, the object is deallocated.

Implements IRoot.

virtual signed int IRenderEngineContext::FastSwap ( IVolumeDataContext pData,
IOctreeContext pOctree 
)
pure virtual

Performs a server side request to swap from one volume to another quickly. The new volume must have the same dimensions, spacing, orientation, and skew.

Parameters
pDataThe new dataset to apply.
pOctreeThe octree associated with pData to apply. This can be NULL, but only RT_THIN_* rendering modes will work if that is the case.
virtual signed int IRenderEngineContext::FindPath ( VECTOR3D **  arrPath,
unsigned int *  numPathSteps,
VECTOR3D pStart,
VECTOR3D pFinish,
FIND_PATH_PARAMS pParams,
IAllocator pAlloc 
)
pure virtual

Attempts to find a path between two points in the volume using either static or dynamic upper and lower thresholds for determining the pathway.

Parameters
arrPathIf the operation succeeded, this will get the address of a buffer containing the result of the path find operation. The buffer will be allocated using pAlloc. If the operation failed, this parameter is untouched.
numPathStepsThe address of an integer that will get the number of elements in the resultant path buffer arrPath.
pStartThe start point for the path finding routine. Must be non-NULL.
pFinishThe finish point for the path finding routine. Must be non-NULL.
pParamsThe parameters for the path finding routine. If NULL, the values set in the default constructor for FIND_PATH_PARAMS are used. See the FIND_PATH_PARAMS description for details on each of the parameters.
pAllocThe allocator to use when allocating the resultant path arrPath. Must be non-NULL.
Returns
S_OK if a path was found. S_FALSE if a path was not found (MaxSteps taken without success). E_INVALIDARG, E_FAIL and E_OUTOFMEMORY are also possible.
virtual signed int IRenderEngineContext::FinishJobFindPath ( VECTOR3D **  arrPath,
unsigned int *  numPathSteps,
IAllocator pAlloc,
signed long long  jobID 
)
pure virtual

Placeholder for ()

virtual signed int IRenderEngineContext::GetAdaptiveJPEGStatus ( signed int *  status)
pure virtual

Gets the status of adaptive JPEG quality for interactive rendering.

virtual signed int IRenderEngineContext::GetCurvedMPRPath ( MATRIX44D **  ppPath,
unsigned int *  pathLen 
)
pure virtual

Returns the current curved MPR path into the variable at address ppPath and the number of MATRIX44Ds in the path into the variable at address pathLen.

Parameters
ppPathThe address of the variable to receive the array of curved MPR positions. This is a shallow pointer. Do not deallocate this buffer.
pathLenThe address of the variable to receive the number of MATRIX44Ds in the curved path.
virtual signed int IRenderEngineContext::GetCurvedReformat ( IVolumeDataContext **  ppData,
const unsigned int  numProjectionPlanesPerSlice,
const unsigned int  numSlices,
const unsigned int  ppWidth,
const unsigned int  ppHeight,
const unsigned int  measurementSlice,
const float  Zoom,
MATRIX44D **  arrProjPlanes,
const ENUM_CURVED_MPR_TYPE  type 
)
pure virtual

Creates a new volume from several curved MPR specifications. This function may be used to reformat a volume so that a curved render may have depth as well. The resultant volume may then be rendered in any available rendering mode. Viewing the volume axially will give the view you would get from SetCurvedMPRPAth(). See SetCurvedMPRPAth() for more information on how the arrProjPlanes matrices should be specified.

Parameters
ppDataThe address of an IVolumeDataContext pointer that will receive the newly created volume data.
numProjectionPlanesPerSliceThe number of positions that make up the curve for each slice.
numSlicesThe number of slices
ppWidthOutput volume width
ppHeightOutput volume height
measurementSliceThis is the index (0-based) of the slice to specify for accurate measurement. For example, if you specify 3 the fourth image in the volume will have the property that pixels in the X and Y directions will be accurately represented in millimeters.
ZoomThe number of pixels per voxel in the non-curved dimension. If this is -1, the pixels per voxel is calculated based upon the length of the curve.
arrProjPlanesThe projecton plane positions for each slice. The dimensions are arrProjPlanes[slice][curvePoint].
typeWhich axis is going to be non-linear on every slice?
virtual signed int IRenderEngineContext::GetCurvedReformatEx ( IVolumeDataContext **  ppData,
const signed int  bCreateOctree,
IOctreeContext **  ppOctree,
const ENUM_SMOOTH_PARAM  octreeSmoothParam,
const unsigned int  numProjectionPlanesPerSlice,
const unsigned int  numSlices,
const unsigned int  ppWidth,
const unsigned int  ppHeight,
const unsigned int  measurementSlice,
const float  Zoom,
MATRIX44D **  arrProjPlanes,
const ENUM_CURVED_MPR_TYPE  type 
)
pure virtual

This will not go through the queuing process. You MUST make sure you're actually in curved MPR mode before calling this function. To ensure this, call WaitForParamsToBeSet() after setting the render type.

Parameters
pDataThe address of the IVolumeDataContext pointer that will get the location of the newly created volume.
bCreateOctreeIf H_TRUE this function will create an ocrtree for the IVolumeDataContext object pointed to by pData. If H_FALSE, no octree will be created.
ppOctreeThe address of an IOctreeContext pointer that will recieve the created octree if bCreateOctree is set to H_TRUE.
octreeSmoothParamA value from the ENUM_SMOOTH_PARAM enumeration to set the smothing mode, if any, to be applied to the created octree. This is only relavent if bCreateOctree is set to H_TRUE.
numProjPlanesPerSliceint
numSlicesint
ppWidthint
ppHeightint
measurementSliceThe index of the slice that can be used for accurate measurement. For accurate measurement on other slices, it is up to the user to understand the relationship between the input data and the output volume.
Zoomfloat
arrProjPlanesMATRIX44D**
typeint
Returns
hdrcVolumeDataContext
virtual signed int IRenderEngineContext::GetFramesPerPhase ( unsigned int *  pFrames)
pure virtual

Returns the number of frames per phase set on this engine. In 4D rendering, it is possible to tell the engine to automatically advance to the next phase of the 4D dataset after a certain number of frames have been rendered. 0 means the phase will not be advanced. See SetFramesPerPhase().

Parameters
pFramesThe address of the variable to get the current number of frames per phase.
virtual signed int IRenderEngineContext::GetID ( signed long long *  pID)
pure virtual

Integer that represents the server side object that contains the volume data.

virtual signed int IRenderEngineContext::GetImageAllocator ( IAllocator **  ppAlloc)
pure virtual

Returns the image allocator that will be used for allocating images as they come in from the server. By default, this is the allocator returned by ILibrary::GetAllocator() with the id parameter HCAP_IMAGE.

virtual signed int IRenderEngineContext::GetOctreeContext ( IOctreeContext **  pOctree)
pure virtual

Gets the octree context associated with this render engine.

Parameters
pOctreeThe address of the variable to receive the pointer to the octree interface used by this engine.
virtual signed int IRenderEngineContext::GetPointVisibility ( VECTOR3D vtr,
POINTVISIBLEINFO pvi,
const unsigned int  Num 
)
pure virtual

Project 3D coordinates (in patient system coordinates) onto the rendering plane. Output points are relative to the center of the rendering plane, with X axis increasing along the raster, Y axis increasing along rows. Additionally, the opacity of the specified point and the color accumulated while traversing from the point to the screen is returned..

Parameters
vtrList of points to get visibility info.
pviList of POINTVISIBLEINFO objects to receive the visibility info.
NumNumber of points to transform.
virtual signed int IRenderEngineContext::GetRenderEngineContext ( IRenderEngineContext **  ppContext)
pure virtual

Implementation of the IRenderParamsReceiver function. For this interface it is redundant and this interface is returned.

Parameters
ppContextThe address of the variable to get the interface pointer for this object.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::GetRenderParams ( RENDER_PARAMS pParams)
pure virtual

Returns the current RENDER_PARAMS for this engine.

Parameters
pParamsThe address of a RENDER_PARAMS structure to get the current state of this engine.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::GetRenderParamsCached ( RENDER_PARAMS pParams)
pure virtual

Not used by this object. Returns E_NOTIMPL.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::GetRenderParamsEx ( RENDER_PARAMS pParams,
const signed int  bIncludeQueuedParams 
)
pure virtual

Returns the current RENDER_PARAMS for this engine. Functionally identical to GetRenderParams on this object.

Parameters
pParamsThe address of a RENDER_PARAMS structure to get the current state of this engine.
bIncludeQueuedParamsIgnored in this object.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::GetServerContext ( IServerContext **  ppServer)
pure virtual

Returns the server context used to initialize this render engine.

Parameters
ppServerThe address of the variable to receive the interface pointer for the server context.
virtual signed int IRenderEngineContext::GetTransferFunction ( const unsigned int  index,
RENDER_RANGE_PARAMS pParams 
)
pure virtual

Only relevant for 8TF builds. This will retreive the transfer function assigned to the specified index.

Parameters
indexThe index of the transfer function. 0-7 are acceptable values.
pParamsThe address of a RENDER_RANGE_PARAMS array (size MAX_RENDER_RANGES_PARAMS) to get the transfer function definition. This array is expected to be allocated by the caller before calling this function.
virtual signed int IRenderEngineContext::GetTransferFunctionCount ( unsigned int *  numTFs)
pure virtual

Gets the number of transfer functions applied to the current engine.

Parameters
numTFsThe address of an h_uint32 variable to store the number of transfer functions.
virtual signed int IRenderEngineContext::GetVolumeDataContext ( IVolumeDataContext **  ppData)
pure virtual

Returns the volume data associated with this render engine into the variable at address ppData.

Parameters
ppDataThe address of the variable to receive the interface pointer to the volume data.
virtual signed int IRenderEngineContext::IncRef ( )
pure virtual

Increases the reference count on this object by 1. You do not need to call this after an object is first created. It is 1 by default.

Implements IRoot.

virtual signed int IRenderEngineContext::IsRenderingFinished ( )
pure virtual

Returns S_OK if the rendering command is finished OR there is no rendering command in progress. Otherwise, returns S_FALSE.

virtual signed int IRenderEngineContext::ProjectPoint ( VECTOR3D vtx,
POINT pt,
const unsigned int  Num 
)
pure virtual

Takes 3D points in patient coordinates and returns the 2D points that the locations would be projected onto the projection plane. All arrays are expected to be allocated by the caller before calling this function.

Parameters
vtxArray of 3D points to project to the screen.
pt2D POINT array that will get the results.
Numnumber of points being projected.
virtual signed int IRenderEngineContext::ProjectVolumetricShadow ( )
pure virtual

Projects a volume shadow from the current view location. This is implemented by setting the parts of the volume to be shadowed to the second transfer function. The second TF should then be slightly darker than the first.

virtual signed int IRenderEngineContext::ReleaseSessionResources ( )
pure virtual

Call this function if you wish to free server resources before disconnecting.

virtual signed int IRenderEngineContext::Render ( VOLVISIMAGE pImReq,
VOLVISIMAGE pImRes 
)
pure virtual

Renders the requested image requirements into the result image structure.

Parameters
pImReqRequested image requirements. Generally, VOLVISIMAGE::Stage is the only relevant parameter here.
pImResResult image structure.
virtual signed int IRenderEngineContext::RenderFinal ( )
pure virtual

Not used by this object. Returns E_NOTIMPL.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::RenderFinalEx ( const signed int  bNotifyListeners)
pure virtual

Not used by this object. Returns E_NOTIMPL.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::RenderFinalEx2 ( const signed int  bIgnoreParams,
const ENUM_RENDER_PARAMS_MASK  paramsToIgnore 
)
pure virtual

Not used by this object. Returns E_NOTIMPL.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::RenderFinalEx3 ( const signed int  bNotifyListeners,
const signed int  bIgnoreParams,
const ENUM_RENDER_PARAMS_MASK  paramsToIgnore 
)
pure virtual

Not used by this object. Returns E_NOTIMPL.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::RenderStreamed ( VOLVISIMAGE pPrevImage,
RENDER_PARAMS pNextImageParams,
VOLVISIMAGE pNextImage 
)
pure virtual

Performs a streamed render that performs up to three function calls at once on the server. They are listed below in the order they are called:

  • Wait for render to complete - If pPrevImage is not NULL, the previously rendered image is returned here.
  • Set render params - If pNextImageParams is not NULL, the params are set on the server.
  • Start rendering next frame - If pNextImage is not NULL, the next image is started rendering.

Generally, this a streaming session starts with a RenderStreamed(NULL,rp,imgRequest) call, sustained by RenderStreamed(imgResponse,rp,imgRequest) calls then completed with a RenderStreamed(imgResponse,NULL,NULL) call.

virtual signed int IRenderEngineContext::RenderStreamedEx ( VOLVISIMAGE pPrevImage,
RENDER_PARAMS pNextImageParams,
VOLVISIMAGE pNextImage,
const signed int  bGetFinishedFrame 
)
pure virtual

Identical to RenderStreamed(), but with an additional parameter called bGetFinishedFrame. If H_TRUE, the frame is sent to the client as usual. If H_FALSE, WaitRender() is called on the server, but the frame is discarded and no bandwidth is wasted on an image you might not want for some reason.

virtual signed int IRenderEngineContext::RenderStreamedEx2 ( VOLVISIMAGE pPrevImage,
RENDER_PARAMS pNextImageParams,
const unsigned int  numVertexCallLists,
IVertexCallListContext **  arrVertices,
VOLVISIMAGE pNextImage,
const signed int  bGetFinishedFrame 
)
pure virtual

Identical to RenderStreamedEx(), but with two additional parameters. numVertexCallLists is the number of vertex call lists in arrVertices. If 0, arrVertices is ignored. However, if you wish to set 0 call lists to the engine so no polygons are rendered, set this parameter to 0xFFFFFFFF. arrVertices is an array of interface points to vertex call lists describing polygon objects to put into images rendered by this engine.

virtual signed int IRenderEngineContext::RenderStreamedEx3 ( VOLVISIMAGE pPrevImage,
RENDER_PARAMS pNextImageParams,
const unsigned int  numVertexCallLists,
IVertexCallListContext **  arrVertices,
const int  TFsToSet,
RENDER_RANGE_PARAMS **  rrps,
VOLVISIMAGE pNextImage,
const signed int  bGetFinishedFrame 
)
pure virtual

Identical to RenderStreamedEx2() but with two additional parameters. This call is only relevant for 8TF builds. TFsToSet is a bit mask describing which transfer functions are described by rrps. Bits 0-7 are relevant here. If but 0 is true, this means that TF 0 is being set. The number of true bits in this parameter should be the number of transfer functions in rrps. rrps is an array of RENDER_RANGE_PARAMS array pointers that describe the transfer functions being set. The outer array should be of the size described by the number of true bits in TFsToSet. The inner arrays should all be of length MAX_RENDER_RANGES_PARAMS.

virtual signed int IRenderEngineContext::SetAdaptiveJPEGParameters ( ADAPTIVEJPEGPARAMS params)
pure virtual

Sets the parameters for adaptive JPEG quality for interactive rendering.

virtual signed int IRenderEngineContext::SetAdaptiveJPEGStatus ( signed int  status)
pure virtual

Turns the adaptive JPEG quality on or off for interactive rendering. This will adjust the JPEG compression based on the time taken for previous frames

virtual signed int IRenderEngineContext::SetAutonavigating ( const signed int  bNavigating,
const double  speed 
)
pure virtual

Not supported by this object. Returns E_NOTIMPL.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::SetCurvedMPRPath ( const unsigned int  numProjPlanes,
MATRIX44D arrProjPlanes,
const ENUM_CURVED_MPR_TYPE  type 
)
pure virtual

Sets the curved MPR path to use. Essentially, the X vector (m11,m21,m31) in the projection plane describes the direction for the linear slice to take at every interpolated point on the curve. The offset (m14,m24,m34) in the projection plane describes where each point is. From this description, the points you specify are interpolated via Catmull-Rom spline interpolation. The spacing between interpolated points is dictated by the image size. NOTE: You call this function every time you switch to RT_MPR_CURVED. It does not persist across other render types.

Parameters
numProjPlanesNumbers of projection plane positions that make up the curve.
arrProjPlanesProjection plane positions that describe what we should interpolate between.
typeWhich axis is going to be non-linear?

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::SetFastPolygonsEnabled ( signed int  bEnabled)
pure virtual

Sets the engine to use fast polygons mode. In this mode changes to IVertexCallListContext objects are rendered more quickly. However, no changes to the dataset are permitted while in this mode. This means that no changes to the position, orientation, or any other RENDER_PARAMS fields are permitted.

Parameters
bEnabledIf set to H_TRUE, engine runs in fast polygon mode. If set to H_FALSE, engine runs in normal mode.
virtual signed int IRenderEngineContext::SetFramesPerPhase ( const unsigned int  frames)
pure virtual

Sets the number of frames to render before moving on to the next phase. Set this to 0 to keep the current phase indefinitely.

virtual signed int IRenderEngineContext::SetImageAllocator ( IAllocator pAlloc)
pure virtual

Sets the allocator to be used when receiving images from the server. Note that images are only allocated when necessary. So, if you pass in an imRes with non-NULL Data, then the data is only reallocated if the size of the image buffer has changed. Otherwise, nothing is allocated. This implies that whenever the Data parameter changes in a rendering call, you've got to free the old memory from the previous frame.

virtual signed int IRenderEngineContext::SetPhase ( const unsigned int  phase)
pure virtual

If the control was initialized for 4D rendering, this sets the view to the specified phase.

Parameters
phaseThe phase to set.
virtual signed int IRenderEngineContext::SetRenderParams ( RENDER_PARAMS pRP)
pure virtual

Sets the RENDER_PARAMS for this engine.

Parameters
pRPThe params to set.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::SetRenderParamsEx ( RENDER_PARAMS pRP,
const signed int  bNotifyLinked 
)
pure virtual

bNotifyLinked is ignored by this object. This is functionally identical to SetRenderParams() on this object.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::SetRenderParamsEx2 ( RENDER_PARAMS pRP,
const unsigned int  numVertexCallLists,
IVertexCallListContext **  arrVertices 
)
pure virtual

Identical to SetRenderParams(), but with two additional parameters.

Parameters
pRPThe params to set.
numVertexCallListsThe number of vertex call lists in arrVertices. If 0, arrVertices is ignored. However, if you wish to set 0 call lists to the engine so no polygons are rendered, set this parameter to 0xFFFFFFFF.
arrVerticesAn array of interface points to vertex call lists describing polygon objects to put into images rendered by this engine.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::SetRenderParamsEx3 ( RENDER_PARAMS pRP,
const unsigned int  numVertexCallLists,
IVertexCallListContext **  arrVertices,
const signed int  bNotifyLinked 
)
pure virtual

bNotifyLinked is ignored by this object. This is functionally identical to SetRenderParamsEx2() on this object.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::SetRenderParamsEx4 ( RENDER_PARAMS pRP,
const unsigned int  numVertexCallLists,
IVertexCallListContext **  arrVertices,
const int  TFsToSet,
RENDER_RANGE_PARAMS **  rrps 
)
pure virtual

Identical to SetRenderParamsEx2() but with two additional parameters. This call is only relevant for 8TF builds.

Parameters
pRPThe params to set.
numVertexCallListsThe number of vertex call lists in arrVertices. If 0, arrVertices is ignored. However, if you wish to set 0 call lists to the engine so no polygons are rendered, set this parameter to 0xFFFFFFFF.
arrVerticesAn array of interface points to vertex call lists describing polygon objects to put into images rendered by this engine.
TFsToSetBit mask describing which transfer functions are described by rrps. Bits 0-7 are relevant here. If but 0 is true, this means that TF 0 is being set. The number of true bits in this parameter should be the number of transfer functions in rrps.
rrpsAn array of RENDER_RANGE_PARAMS array pointers that describe the transfer functions being set. The outer array should be of the size described by the number of true bits in TFsToSet. The inner arrays should all be of length MAX_RENDER_RANGES_PARAMS.
virtual signed int IRenderEngineContext::SetRenderParamsRenderAndSendPrevFrame ( const unsigned long long  imgID,
VOLVISIMAGE imRes,
RENDER_PARAMS rp,
VOLVISIMAGE imReq 
)
pure virtual

As the name implies, set's the render params, starts a render, then compresses (if requested) and sends the previous frame.

Parameters
imgIDReturn value from waitForPrevRender()
imResInformation about the image to return.
rpNext frame parameters.
imReqInformation about the next frame's image.
virtual signed int IRenderEngineContext::SetRenderParamsRenderAndSendPrevFrameEx ( const unsigned long long  imgID,
VOLVISIMAGE imRes,
RENDER_PARAMS rp,
const unsigned int  numVertexCallLists,
IVertexCallListContext **  arrVertices,
VOLVISIMAGE imReq 
)
pure virtual

Identical to SetRenderParamsRenderAndSendPrevFrame(), but with two additional parameters.

Parameters
imgIDReturn value from waitForPrevRender()
imResInformation about the image to return.
rpNext frame parameters.
imReqInformation about the next frame's image.
numVertexCallListsThe number of vertex call lists in arrVertices. If 0, arrVertices is ignored. However, if you wish to set 0 call lists to the engine so no polygons are rendered, set this parameter to 0xFFFFFFFF.
arrVerticesAn array of interface points to vertex call lists describing polygon objects to put into images rendered by this engine.
virtual signed int IRenderEngineContext::SetRenderParamsRenderAndSendPrevFrameEx2 ( const unsigned long long  imgID,
VOLVISIMAGE imRes,
RENDER_PARAMS rp,
const unsigned int  numVertexCallLists,
IVertexCallListContext **  arrVertices,
const int  TFsToSet,
RENDER_RANGE_PARAMS **  rrps,
VOLVISIMAGE imReq 
)
pure virtual

Identical to SetRenderParamsRenderAndSendPrevFrameEx() but with two additional parameters. This call is only relevant for 8TF builds.

Parameters
imgIDReturn value from waitForPrevRender()
imResInformation about the image to return.
rpNext frame parameters.
imReqInformation about the next frame's image.
numVertexCallListsThe number of vertex call lists in arrVertices. If 0, arrVertices is ignored. However, if you wish to set 0 call lists to the engine so no polygons are rendered, set this parameter to 0xFFFFFFFF.
arrVerticesAn array of interface points to vertex call lists describing polygon objects to put into images rendered by this engine.
TFsToSetBit mask describing which transfer functions are described by rrps. Bits 0-7 are relevant here. If but 0 is true, this means that TF 0 is being set. The number of true bits in this parameter should be the number of transfer functions in rrps.
rrpsAn array of RENDER_RANGE_PARAMS array pointers that describe the transfer functions being set. The outer array should be of the size described by the number of true bits in TFsToSet. The inner arrays should all be of length MAX_RENDER_RANGES_PARAMS.
virtual signed int IRenderEngineContext::SetRenderParamsRenderRead ( RENDER_PARAMS rp,
VOLVISIMAGE imReq,
VOLVISIMAGE imRes 
)
pure virtual
Deprecated:
If you wish to multiplex these types of commands in the client/server environment, RenderStreamed() will perform this task in a much more efficient manner.
virtual signed int IRenderEngineContext::SetTransferFunction ( const unsigned int  index,
RENDER_RANGE_PARAMS arrParams 
)
pure virtual

Sets a transfer function to this engine. This call is only relevant for 8TF builds.

Parameters
indexAn integer value describing which transfer function is being set. Values are 0-7 for transfer functions 1-8.
arrParamsAn array of RENDER_RANGE_PARAMS array pointers that describe the transfer function being set. Each element in the array describes a render range which can be used with the assigned transfer function. Each transfer function may be assigned MAX_RENDER_RANGES_PARAMS render ranges with a combined total of MAX_RENDER_RANGE_POINTS points.
virtual signed int IRenderEngineContext::SetViewMode ( const ENUM_VIEW_MODE  mode)
pure virtual
Deprecated:
This is functionally equivalent to setting the RF_FRONT_CLIPPING_PLANE_ENABLED flag on the RENDER_PARAMS. That should be used instead.

Implements IRenderParamsReceiver.

virtual signed int IRenderEngineContext::SetVolumeData ( IVolumeDataContext pData,
IOctreeContext pOctree 
)
pure virtual

Sets the volume data for this engine. Either parameter may be null. This is important because MPR engines do not require an Octree

Parameters
pDataThe volume data.
pOctreeAn initialized octree for the previously specified volume data.
virtual signed int IRenderEngineContext::SetVolumeData4D ( IVolumeDataContext **  arrData,
IOctreeContext **  arrOctrees,
const unsigned int  numVolumes 
)
pure virtual

Initialized a render engine for 4D rendering on the server. All data sets must be the same dimensions and orientation/skew/spacing.

Parameters
arrDataAn array of numVolumes volume data interface pointers describing the data to apply.
arrOctreesAn array of numVolumes initialized octree for the previously specified volume data. NULL is acceptable here if RT_THIN_* rendering modes are all that will be used.
numVolumesThe number of volumes being applied to this engine.
virtual signed int IRenderEngineContext::ShootRay ( POINT pt,
RAYSTOPINFO rsi,
const unsigned int  Num 
)
pure virtual

Shoot (cast) rays out from the projection plane and returns the XYZ coordinate of the first ray/scalar-field interaction/hit. Essentially, this ray casting procedure is identical to ray casting during image rendering so the transfer function and projection plane settings define the probe ray origin, direction and it's first interaction. Unless you are doing connectivity segmentation, you can probably call ShootRayFast() instead of this function for better performance.

ShootRay() can only be called when the render engine is idle. If rendering is in progress ShootRay() will return E_UNEXPECTED.

Parameters
ptAn array of points on the projection plane from which each ray is emitted.
rsiInformation about where the points hit. This includes the coordinate, voxel value, and transfer function render range.
NumNumber of points in the pt and rsi arrays.
virtual signed int IRenderEngineContext::ShootRayEx ( POINT pt,
VECTOR3D start,
VECTOR3D direction,
double  percent,
RAYSTOPINFO rsi,
signed int  Num 
)
pure virtual

A version of the ShootRay() function that allows one to set the percentage of ray energy that must be absorbed before the ray stops. It also allows one to set the origin coordinate of the ray, and a direction of travel for the ray.

ShootRayEx() can only be called when the render engine is idle. If rendering is in progress ShootRayEx() will return E_UNEXPECTED.

Parameters
ptAn array of points on the projection plane from which each ray is emitted.
startAn array of starting coordinate from which each ray is emitted.
directionAn array of vectors designating the direction of travel for each ray.
percentThe percentage of ray energy that must be absorbed before the ray is considered to have stopped.
rsiInformation about where the points hit. This includes the coordinate, voxel value, and transfer function render range.
NumNumber of points in the each of the pt, start, direction, and rsi arrays.
virtual signed int IRenderEngineContext::ShootRayFast ( POINT pt,
RAYSTOPINFO rsi,
const unsigned int  Num 
)
pure virtual

A significantly faster version of ShootRay() when shooting more than one ray. The catch is that you will not get the min or max fields back in the RAYSTOPINFO. For that reason, this call is insufficient for connectivity segmentation.

ShootRayFast() can only be called when the render engine is idle. If rendering is in progress ShootRayFast() will return E_UNEXPECTED.

Parameters
ptPoints on the projection plane.
rsiInformation about where the points hit.
NumNumber of points in the pt and rsi arrays.
virtual signed int IRenderEngineContext::ShootRayGetWall ( POINT pt,
RAYWALLINFO rsi,
const unsigned int  Num 
)
pure virtual

A version of the ShootRay() function that determines the dataset inflection points along the ray's path of trave. As a ray travels through a volume the scalar value of the voxels the ray travels through tends to increase or decrease over measurable distances. The ShootRayGetWall() method can detect the inflection points at which the slope of the voxel's scalar gradient changes. For example, as a ray travels through the volume the voxel's scalar values may increase in value, then decrease, then increase again (or vice versa). The ShootRayGetWall() method will return data at the points where the voxel values first begin to decrease and then increase again.

Parameters
ptAn array of points on the projection plane from which each ray is emitted.

ShootRayGetWall() can only be called when the render engine is idle. If rendering is in progress ShootRayGetWall() will return E_UNEXPECTED.

Parameters
rsiAn array of RAYWALLINFO structures that contains the inflection points and a RAYSTOPINFO structure for the voxel where each ray stops.
NumNumber of points in the each of the pt and rsi arrays.
virtual signed int IRenderEngineContext::StartJobFindPath ( signed long long *  jobID,
VECTOR3D pStart,
VECTOR3D pFinish,
FIND_PATH_PARAMS pParams 
)
pure virtual

Placeholder for ()

virtual signed int IRenderEngineContext::WaitForPrevRender ( unsigned long long *  imgID)
pure virtual

Waits for the previously rendering frame to complete. Should be used in conjunction with SetRenderParamsRenderAndSendPrevFrame().

Returns
This value is used for reference in SetRenderParamsRenderAndSendPrevFrame() when the frame is to be retrieved.