VTK  9.0.1
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 =========================================================================*/
21 #ifndef vtkOpenVROverlay_h
22 #define vtkOpenVROverlay_h
23 
24 #include "vtkNew.h" // for ivars
25 #include "vtkObject.h"
26 #include "vtkRenderingOpenVRModule.h" // For export macro
27 #include "vtkWeakPointer.h" // for ivars
28 #include <map> // ivars
29 #include <openvr.h> // for ivars
30 #include <vector> // ivars
31 
32 class vtkJPEGReader;
35 class vtkTextureObject;
37 class vtkOpenVRCamera;
38 class vtkXMLDataElement;
39 
40 class VTKRENDERINGOPENVR_EXPORT vtkOpenVROverlay : public vtkObject
41 {
42 public:
43  static vtkOpenVROverlay* New();
44  vtkTypeMacro(vtkOpenVROverlay, vtkObject);
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
50  virtual void Render();
51 
55  virtual void Create(vtkOpenVRRenderWindow* rw);
56 
60  vr::VROverlayHandle_t GetOverlayHandle() { return this->OverlayHandle; }
61 
65  vtkTextureObject* GetOverlayTexture() { return this->OverlayTexture.Get(); }
66 
68 
71  virtual void MouseMoved(int x, int y);
72  virtual void MouseButtonPress(int x, int y);
73  virtual void MouseButtonRelease(int x, int y);
75 
76  vtkOpenVROverlaySpot* GetLastSpot() { return this->LastSpot; }
77 
78  std::vector<vtkOpenVROverlaySpot>& GetSpots() { return this->Spots; }
79 
80  /***
81  * update the texture because this spot has changed
82  */
83  virtual void UpdateSpot(vtkOpenVROverlaySpot* spot);
84 
86 
89  void SetSessionName(const std::string& name) { this->SessionName = name; }
90  std::string GetSessionName() { return this->SessionName; }
92 
94 
97  void SetDashboardImageFileName(const std::string& name) { this->DashboardImageFileName = name; }
98  std::string GetDashboardImageFileName() { return this->DashboardImageFileName; }
100 
103  virtual void WriteCameraPoses(ostream& os);
104  virtual void WriteCameraPoses();
105  virtual void ReadCameraPoses();
106  virtual void ReadCameraPoses(istream& is);
107  virtual void ReadCameraPoses(vtkXMLDataElement* xml);
108  virtual void SaveCameraPose(int num);
109  virtual void LoadCameraPose(int num);
110  virtual void LoadNextCameraPose();
111  virtual std::map<int, vtkOpenVRCameraPose>& GetSavedCameraPoses()
112  {
113  return this->SavedCameraPoses;
114  }
115 
116  // not used for dashboard overlays
117  void Show();
118  void Hide();
119 
120 protected:
122  ~vtkOpenVROverlay() override;
123 
124  virtual void SetupSpots() {}
125 
126  vr::IVRSystem* VRSystem;
127 
128  // for the overlay
129  vr::VROverlayHandle_t OverlayHandle;
130  vr::VROverlayHandle_t OverlayThumbnailHandle;
132 
134 
135  // std::vector<vtkOpenVRActiveSpot> ActiveSpots;
136  unsigned char* OriginalTextureData;
137  unsigned char* CurrentTextureData;
138 
139  std::vector<vtkOpenVROverlaySpot> Spots;
141 
144  std::map<int, vtkOpenVRCameraPose> SavedCameraPoses;
145 
148 
151 
152 private:
153  vtkOpenVROverlay(const vtkOpenVROverlay&) = delete;
154  void operator=(const vtkOpenVROverlay&) = delete;
155 };
156 
157 #endif
vtkOpenVROverlay::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkOpenVROverlay::GetDashboardImageFileName
std::string GetDashboardImageFileName()
Definition: vtkOpenVROverlay.h:98
vtkOpenVROverlay::SetDashboardImageFileName
void SetDashboardImageFileName(const std::string &name)
Set/Get a file for the dashboard image.
Definition: vtkOpenVROverlay.h:97
vtkOpenVROverlay::SetSessionName
void SetSessionName(const std::string &name)
Set/Get a prefix for saving camera poses.
Definition: vtkOpenVROverlay.h:89
vtkOpenVROverlay::SavedCameraPoses
std::map< int, vtkOpenVRCameraPose > SavedCameraPoses
Definition: vtkOpenVROverlay.h:144
vtkOpenVROverlay::SetDashboardImageData
virtual void SetDashboardImageData(vtkJPEGReader *rdr)
vtkOpenVROverlay::SetupSpots
virtual void SetupSpots()
Definition: vtkOpenVROverlay.h:124
vtkOpenVROverlay::CurrentTextureData
unsigned char * CurrentTextureData
Definition: vtkOpenVROverlay.h:137
vtkOpenVROverlay::ActiveSpotIntensity
double ActiveSpotIntensity
Definition: vtkOpenVROverlay.h:150
vtkOpenVROverlay::LoadNextCameraPose
virtual void LoadNextCameraPose()
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:54
vtkOpenVROverlay::OverlayTexture
vtkNew< vtkTextureObject > OverlayTexture
Definition: vtkOpenVROverlay.h:131
vtkOpenVROverlay::SetSavedCameraPose
virtual void SetSavedCameraPose(int i, vtkOpenVRCameraPose *)
vtkOpenVROverlay::OverlayThumbnailHandle
vr::VROverlayHandle_t OverlayThumbnailHandle
Definition: vtkOpenVROverlay.h:130
vtkOpenVROverlay::MouseMoved
virtual void MouseMoved(int x, int y)
methods to support events on the overlay
vtkOpenVROverlay::Create
virtual void Create(vtkOpenVRRenderWindow *rw)
Create the overlay.
vtkOpenVROverlay::ReadCameraPoses
virtual void ReadCameraPoses(istream &is)
vtkOpenVROverlay::SessionName
std::string SessionName
Definition: vtkOpenVROverlay.h:142
vtkOpenVROverlay::vtkOpenVROverlay
vtkOpenVROverlay()
vtkOpenVROverlay::GetOverlayHandle
vr::VROverlayHandle_t GetOverlayHandle()
Get handle to the overlay.
Definition: vtkOpenVROverlay.h:60
vtkOpenVROverlay::Window
vtkWeakPointer< vtkOpenVRRenderWindow > Window
Definition: vtkOpenVROverlay.h:146
vtkOpenVROverlay::MouseButtonPress
virtual void MouseButtonPress(int x, int y)
vtkOpenVROverlay::GetLastSpot
vtkOpenVROverlaySpot * GetLastSpot()
Definition: vtkOpenVROverlay.h:76
vtkOpenVROverlay::GetSavedCameraPoses
virtual std::map< int, vtkOpenVRCameraPose > & GetSavedCameraPoses()
Definition: vtkOpenVROverlay.h:111
vtkOpenVROverlay::~vtkOpenVROverlay
~vtkOpenVROverlay() override
vtkOpenVROverlay::Spots
std::vector< vtkOpenVROverlaySpot > Spots
Definition: vtkOpenVROverlay.h:139
vtkOpenVROverlay::WriteCameraPoses
virtual void WriteCameraPoses()
vtkOpenVROverlay::ReadCameraPoses
virtual void ReadCameraPoses()
vtkOpenVROverlay
OpenVR overlay.
Definition: vtkOpenVROverlay.h:41
vtkOpenVROverlay::Hide
void Hide()
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkTextureObject
abstracts an OpenGL texture object.
Definition: vtkTextureObject.h:41
vtkOpenVRRenderWindow
OpenVR rendering window.
Definition: vtkOpenVRRenderWindow.h:71
vtkOpenVROverlay::LastSpot
vtkOpenVROverlaySpot * LastSpot
Definition: vtkOpenVROverlay.h:140
vtkOpenVROverlay::LastCameraPoseIndex
int LastCameraPoseIndex
Definition: vtkOpenVROverlay.h:147
vtkOpenVROverlay::WriteCameraPoses
virtual void WriteCameraPoses(ostream &os)
vtkOpenVRCameraPose
Definition: vtkOpenVROverlayInternal.h:25
vtkNew< vtkTextureObject >
vtkOpenVROverlay::GetSessionName
std::string GetSessionName()
Definition: vtkOpenVROverlay.h:90
vtkOpenVROverlay::LastSpotIntensity
double LastSpotIntensity
Definition: vtkOpenVROverlay.h:149
vtkWeakPointer.h
vtkXMLDataElement
Represents an XML element and those nested inside.
Definition: vtkXMLDataElement.h:37
vtkJPEGReader
read JPEG files
Definition: vtkJPEGReader.h:35
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkObject.h
vtkOpenVROverlay::DashboardImageFileName
std::string DashboardImageFileName
Definition: vtkOpenVROverlay.h:143
vtkOpenVROverlay::New
static vtkOpenVROverlay * New()
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkOpenVROverlay::Show
void Show()
vtkNew.h
vtkOpenVROverlay::LoadCameraPose
virtual void LoadCameraPose(int num)
vtkOpenVRCamera
OpenVR camera.
Definition: vtkOpenVRCamera.h:36
vtkOpenVROverlay::ReadCameraPoses
virtual void ReadCameraPoses(vtkXMLDataElement *xml)
vtkOpenVROverlay::UpdateSpot
virtual void UpdateSpot(vtkOpenVROverlaySpot *spot)
vtkOpenVROverlay::GetOverlayTexture
vtkTextureObject * GetOverlayTexture()
Get handle to the overlay texture.
Definition: vtkOpenVROverlay.h:65
vtkOpenVROverlay::MouseButtonRelease
virtual void MouseButtonRelease(int x, int y)
vtkOpenVROverlay::OriginalTextureData
unsigned char * OriginalTextureData
Definition: vtkOpenVROverlay.h:136
vtkOpenVROverlay::SaveCameraPose
virtual void SaveCameraPose(int num)
vtkOpenVROverlay::OverlayHandle
vr::VROverlayHandle_t OverlayHandle
Definition: vtkOpenVROverlay.h:129
vtkOpenVROverlaySpot
Definition: vtkOpenVROverlayInternal.h:162
vtkOpenVROverlay::VRSystem
vr::IVRSystem * VRSystem
Definition: vtkOpenVROverlay.h:126
vtkOpenVROverlay::GetSpots
std::vector< vtkOpenVROverlaySpot > & GetSpots()
Definition: vtkOpenVROverlay.h:78
vtkOpenVROverlay::Render
virtual void Render()
Render the overlay.
vtkWeakPointer< vtkOpenVRRenderWindow >
vtkOpenVROverlay::GetSavedCameraPose
vtkOpenVRCameraPose * GetSavedCameraPose(int i)