VTK  9.1.0
vtkOpenVROverlay.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4
5 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
6 All rights reserved.
7 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the above copyright notice for more information.
12
13=========================================================================*/
24#ifndef vtkOpenVROverlay_h
25#define vtkOpenVROverlay_h
26
27#include "vtkNew.h" // for ivars
28#include "vtkObject.h"
29#include "vtkRenderingOpenVRModule.h" // For export macro
30#include "vtkWeakPointer.h" // for ivars
31#include <map> // ivars
32#include <openvr.h> // for ivars
33#include <vector> // ivars
34
35class vtkJPEGReader;
40class vtkOpenVRCamera;
42
43class VTKRENDERINGOPENVR_EXPORT vtkOpenVROverlay : public vtkObject
44{
45public:
48 void PrintSelf(ostream& os, vtkIndent indent) override;
49
53 virtual void Render();
54
58 virtual void Create(vtkOpenVRRenderWindow* rw);
59
63 vr::VROverlayHandle_t GetOverlayHandle() { return this->OverlayHandle; }
64
68 vtkTextureObject* GetOverlayTexture() { return this->OverlayTexture.Get(); }
69
71
74 virtual void MouseMoved(int x, int y);
75 virtual void MouseButtonPress(int x, int y);
76 virtual void MouseButtonRelease(int x, int y);
78
79 vtkOpenVROverlaySpot* GetLastSpot() { return this->LastSpot; }
80
81 std::vector<vtkOpenVROverlaySpot>& GetSpots() { return this->Spots; }
82
83 /***
84 * update the texture because this spot has changed
85 */
86 virtual void UpdateSpot(vtkOpenVROverlaySpot* spot);
87
89
92 void SetSessionName(const std::string& name) { this->SessionName = name; }
93 std::string GetSessionName() { return this->SessionName; }
95
97
100 void SetDashboardImageFileName(VTK_FILEPATH const std::string& name)
101 {
102 this->DashboardImageFileName = name;
103 }
104 VTK_FILEPATH std::string GetDashboardImageFileName() { return this->DashboardImageFileName; }
106
109 virtual void WriteCameraPoses(ostream& os);
110 virtual void WriteCameraPoses();
111 virtual void ReadCameraPoses();
112 virtual void ReadCameraPoses(istream& is);
114 virtual void SaveCameraPose(int num);
115 virtual void LoadCameraPose(int num);
116 virtual void LoadNextCameraPose();
117 virtual std::map<int, vtkOpenVRCameraPose>& GetSavedCameraPoses()
118 {
119 return this->SavedCameraPoses;
120 }
121
122 // not used for dashboard overlays
123 void Show();
124 void Hide();
125
126protected:
129
130 virtual void SetupSpots() {}
131
132 vr::IVRSystem* VRSystem;
133
134 // for the overlay
135 vr::VROverlayHandle_t OverlayHandle;
136 vr::VROverlayHandle_t OverlayThumbnailHandle;
138
140
141 // std::vector<vtkOpenVRActiveSpot> ActiveSpots;
142 unsigned char* OriginalTextureData;
143 unsigned char* CurrentTextureData;
144
145 std::vector<vtkOpenVROverlaySpot> Spots;
147
148 std::string SessionName;
150 std::map<int, vtkOpenVRCameraPose> SavedCameraPoses;
151
154
157
158private:
159 vtkOpenVROverlay(const vtkOpenVROverlay&) = delete;
160 void operator=(const vtkOpenVROverlay&) = delete;
161};
162
163#endif
a simple class to control print indentation
Definition: vtkIndent.h:113
read JPEG files
Allocate and hold a VTK object.
Definition: vtkNew.h:165
abstract base class for most VTK objects
Definition: vtkObject.h:82
OpenVR camera.
OpenVR overlay.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
std::map< int, vtkOpenVRCameraPose > SavedCameraPoses
vr::VROverlayHandle_t OverlayThumbnailHandle
vr::IVRSystem * VRSystem
std::string GetSessionName()
Set/Get a prefix for saving camera poses.
unsigned char * CurrentTextureData
static vtkOpenVROverlay * New()
virtual void ReadCameraPoses()
virtual std::map< int, vtkOpenVRCameraPose > & GetSavedCameraPoses()
virtual void LoadCameraPose(int num)
virtual void UpdateSpot(vtkOpenVROverlaySpot *spot)
std::vector< vtkOpenVROverlaySpot > & GetSpots()
std::string DashboardImageFileName
virtual void LoadNextCameraPose()
virtual void SetupSpots()
unsigned char * OriginalTextureData
vtkOpenVRCameraPose * GetSavedCameraPose(int i)
void SetDashboardImageFileName(VTK_FILEPATH const std::string &name)
Set/Get a file for the dashboard image.
vtkNew< vtkTextureObject > OverlayTexture
vtkOpenVROverlaySpot * LastSpot
virtual void SaveCameraPose(int num)
virtual void MouseButtonRelease(int x, int y)
methods to support events on the overlay
virtual void WriteCameraPoses()
virtual void SetDashboardImageData(vtkJPEGReader *rdr)
virtual void Create(vtkOpenVRRenderWindow *rw)
Create the overlay.
vr::VROverlayHandle_t OverlayHandle
virtual void ReadCameraPoses(istream &is)
virtual void WriteCameraPoses(ostream &os)
void SetSessionName(const std::string &name)
Set/Get a prefix for saving camera poses.
virtual void SetSavedCameraPose(int i, vtkOpenVRCameraPose *)
vtkWeakPointer< vtkOpenVRRenderWindow > Window
~vtkOpenVROverlay() override
VTK_FILEPATH std::string GetDashboardImageFileName()
Set/Get a file for the dashboard image.
virtual void ReadCameraPoses(vtkXMLDataElement *xml)
vr::VROverlayHandle_t GetOverlayHandle()
Get handle to the overlay.
virtual void Render()
Render the overlay.
vtkTextureObject * GetOverlayTexture()
Get handle to the overlay texture.
virtual void MouseMoved(int x, int y)
methods to support events on the overlay
std::string SessionName
vtkOpenVROverlaySpot * GetLastSpot()
std::vector< vtkOpenVROverlaySpot > Spots
virtual void MouseButtonPress(int x, int y)
methods to support events on the overlay
OpenVR rendering window.
abstracts an OpenGL texture object.
a weak reference to a vtkObject.
Represents an XML element and those nested inside.
#define VTK_FILEPATH