VTK  9.3.0
vtkZSpaceCoreCompatibilitySDKManager.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
15 #ifndef vtkZSpaceCoreCompatibilitySDKManager_h
16 #define vtkZSpaceCoreCompatibilitySDKManager_h
17 
18 #include "vtkZSpaceSDKManager.h"
19 
20 // Disable "anonymous struct/union" warning on zSpace compat headers
21 #pragma warning(disable : 4201)
22 #include "zSpaceCoreCompatibility.h" // zSpace header
23 #pragma warning(default : 4201)
24 
25 #include <vector> // for std::vector
26 #include <windows.h> // for HMODULE
27 
28 VTK_ABI_NAMESPACE_BEGIN
29 
35 {
36  // Use the zSpace Core Compatibilty API function name reflection macro to
37  // auto-generate function pointer members for all zSpace Core Compatibility
38  // API entry point functions.
39 
40 #define ZC_COMPAT_SAMPLE_LOCAL_ENTRY_POINT_MEMBER(undecoratedFuncName) \
41  ZCCompat##undecoratedFuncName##FuncPtrType zccompat##undecoratedFuncName;
42 
44 #undef ZC_COMPAT_SAMPLE_LOCAL_ENTRY_POINT_MEMBER
45 };
46 
47 class vtkRenderWindow;
48 class vtkMatrix4x4;
49 
51 {
52 public:
55  void PrintSelf(ostream& os, vtkIndent indent) override;
56 
61  void InitializeZSpace() override;
62 
67  void UpdateViewport() override;
68 
72  void UpdateTrackers() override;
73 
78 
82  void UpdateButtonState() override;
83 
88  void CalculateFrustumFit(const double bounds[6], double position[3], double viewUp[3]) override;
89 
91 
94  void BeginFrame() override;
95  void EndFrame() override;
97 
104 
105 protected:
108 
114 
115  // Store the API functions entry points.
117 
118  // Handle to the zSpace Core Compatibility API dynamic library (.dll).
120 
121  // Handle to the current window
123 
128  bool loadZspaceCoreCompatibilityEntryPoints(const char* zSpaceCoreCompatDllFilePath,
130 
136 
141  void ConvertZSpaceMatrixToVTKMatrix(ZSMatrix4 zSpaceMatrix, vtkMatrix4x4* vtkMatrix);
142 
147  bool Initialized = false;
148 
149 private:
151  void operator=(const vtkZSpaceCoreCompatibilitySDKManager&) = delete;
152 };
153 
154 VTK_ABI_NAMESPACE_END
155 
156 #endif
a simple class to control print indentation
Definition: vtkIndent.h:29
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:31
create a window for renderers to draw into
zSpace Core Compatibility SDK manager class.
void ConvertZSpaceMatrixToVTKMatrix(ZSMatrix4 zSpaceMatrix, vtkMatrix4x4 *vtkMatrix)
zSpace stores matrix in column-major format (as OpenGL).
void ConvertAndTransposeZSpaceMatrixToVTKMatrix(ZSMatrix4 zSpaceMatrix, vtkMatrix4x4 *vtkMatrix)
zSpace stores matrix in column-major format (as OpenGL).
void UpdateViewport() override
Update the zSpace viewport position and size based on the position and size of the application window...
void UpdateTrackers() override
Update the position of the stylus and head trakers.
void CalculateFrustumFit(const double bounds[6], double position[3], double viewUp[3]) override
Let zSpace compute the viewer scale, camera position and camera view up from the input bounds.
bool Initialized
Set to true if zSpaceCoreCompatibility dynamic libraries are found upon vtkZSpaceCoreCompatibilitySDK...
void InitializeZSpace() override
Initialize the zSpace SDK and check for zSpace devices : the display, the stylus and the head tracker...
static vtkZSpaceCoreCompatibilitySDKManager * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool loadZspaceCoreCompatibilityEntryPoints(const char *zSpaceCoreCompatDllFilePath, HMODULE &zSpaceCoreCompatDllModuleHandle, zSpaceCoreCompatEntryPoints &entryPoints)
Load the "zSpaceCoreCompatibility64.dll" shared library then load the zSpace Core Compatibility API e...
void UpdateButtonState() override
Update the stylus buttons state.
void BeginFrame() override
Notify the zSpace SDK for the begining/end of a frame.
void UpdateViewAndProjectionMatrix() override
Update the zSpace view and projection matrix for each eye.
void EndFrame() override
Notify the zSpace SDK for the begining/end of a frame.
void SetRenderWindow(vtkRenderWindow *) override
Set the render windwow the manager makes viewport computations from.
Abstract zSpace SDK manager class.
@ position
Definition: vtkX3D.h:261
Structure holding the loaded zSpace Core Compatibility API entry point function pointers.
Union representing 4x4 matrix (right-handed OpenGL column-major format). / This structure is used by ...
Definition: zSpaceTypes.h:80
#define ZC_COMPAT_SAMPLE_LOCAL_ENTRY_POINT_MEMBER(undecoratedFuncName)
#define ZC_COMPAT_REFLECTION_LIST_UNDECORATED_FUNC_NAMES(_)
struct ZCCompatTargetOpaque * ZCCompatTarget
struct ZCCompatDisplayOpaque * ZCCompatDisplay
struct ZCCompatViewportOpaque * ZCCompatViewport
struct ZCCompatContextOpaque * ZCCompatContext
struct ZCCompatFrustumOpaque * ZCCompatFrustum