VTK  9.1.0
vtkSDL2OpenGLRenderWindow.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3 Program: Visualization Toolkit
4 Module: vtkSDL2OpenGL2RenderWindow.h
5 
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
24 #ifndef vtkSDL2OpenGLRenderWindow_h
25 #define vtkSDL2OpenGLRenderWindow_h
26 
27 #include "vtkOpenGLRenderWindow.h"
28 #include "vtkRenderingOpenGL2Module.h" // For export macro
29 #include <SDL2/SDL.h> // for ivars
30 #include <stack> // for ivar
31 
32 class VTKRENDERINGOPENGL2_EXPORT vtkSDL2OpenGLRenderWindow : public vtkOpenGLRenderWindow
33 {
34 public:
37  void PrintSelf(ostream& os, vtkIndent indent) override;
38 
45  void Initialize(void) override;
46 
52  void Finalize(void) override;
53 
57  void SetFullScreen(vtkTypeBool) override;
58 
62  void SetShowWindow(bool val) override;
63 
65 
68  void SetSize(int, int) override;
69  void SetSize(int a[2]) override { vtkOpenGLRenderWindow::SetSize(a); }
71 
75  int* GetSize() VTK_SIZEHINT(2) override;
76 
78 
81  void SetPosition(int, int) override;
82  void SetPosition(int a[2]) override { vtkOpenGLRenderWindow::SetPosition(a); }
84 
88  int* GetScreenSize() VTK_SIZEHINT(2) override;
89 
93  int* GetPosition() VTK_SIZEHINT(2) override;
94 
99  void SetWindowName(const char*) override;
100 
101  void* GetGenericDisplayId() override { return (void*)this->ContextId; }
102  void* GetGenericWindowId() override { return (void*)this->WindowId; }
103  void* GetGenericDrawable() override { return (void*)this->WindowId; }
104 
108  void MakeCurrent() override;
109 
113  void ReleaseCurrent() override;
114 
118  bool IsCurrent() override;
119 
123  void Clean();
124 
129  void Frame() override;
130 
132 
139  void PushContext() override;
140  void PopContext() override;
142 
152  bool SetSwapControl(int i) override;
153 
158  int GetColorBufferSizes(int* rgba) override;
159 
161 
165  void HideCursor() override;
166  void ShowCursor() override;
168 
169 protected:
172 
173  SDL_Window* WindowId;
174  SDL_GLContext ContextId;
175  std::stack<SDL_GLContext> ContextStack;
176  std::stack<SDL_Window*> WindowStack;
177  int ScreenSize[2];
179 
181  void CreateAWindow() override;
182  void DestroyWindow() override;
183 
184 private:
186  void operator=(const vtkSDL2OpenGLRenderWindow&) = delete;
187 };
188 
189 #endif
vtkSDL2OpenGLRenderWindow::CleanUpRenderers
void CleanUpRenderers()
vtkSDL2OpenGLRenderWindow::Frame
void Frame() override
A termination method performed at the end of the rendering process to do things like swapping buffers...
vtkSDL2OpenGLRenderWindow::GetGenericWindowId
void * GetGenericWindowId() override
Dummy stubs for vtkWindow API.
Definition: vtkSDL2OpenGLRenderWindow.h:102
vtkSDL2OpenGLRenderWindow::SetSwapControl
bool SetSwapControl(int i) override
Set the number of vertical syncs required between frames.
vtkWindow::SetPosition
virtual void SetPosition(int x, int y)
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
vtkSDL2OpenGLRenderWindow::ShowCursor
void ShowCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
vtkSDL2OpenGLRenderWindow::GetSize
int * GetSize() override
Get the current size of the window in pixels.
vtkSDL2OpenGLRenderWindow::GetScreenSize
int * GetScreenSize() override
Get the current size of the screen in pixels.
vtkSDL2OpenGLRenderWindow::WindowId
SDL_Window * WindowId
Definition: vtkSDL2OpenGLRenderWindow.h:173
vtkSDL2OpenGLRenderWindow::ContextId
SDL_GLContext ContextId
Definition: vtkSDL2OpenGLRenderWindow.h:174
vtkSDL2OpenGLRenderWindow::~vtkSDL2OpenGLRenderWindow
~vtkSDL2OpenGLRenderWindow() override
vtkSDL2OpenGLRenderWindow::PushContext
void PushContext() override
Ability to push and pop this window's context as the current context.
vtkSDL2OpenGLRenderWindow::SetSize
void SetSize(int, int) override
Set the size of the window in pixels.
vtkSDL2OpenGLRenderWindow::DestroyWindow
void DestroyWindow() override
Destroy a not-off-screen window.
vtkSDL2OpenGLRenderWindow::PopContext
void PopContext() override
Ability to push and pop this window's context as the current context.
vtkSDL2OpenGLRenderWindow::SetSize
void SetSize(int a[2]) override
Set the size of the window in pixels.
Definition: vtkSDL2OpenGLRenderWindow.h:69
vtkSDL2OpenGLRenderWindow::HideCursor
void HideCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
vtkSDL2OpenGLRenderWindow::Finalize
void Finalize(void) override
Finalize the rendering window.
vtkSDL2OpenGLRenderWindow::GetColorBufferSizes
int GetColorBufferSizes(int *rgba) override
Get the size of the color buffer.
vtkWindow::SetSize
virtual void SetSize(int width, int height)
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkSDL2OpenGLRenderWindow::SetFullScreen
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
vtkSDL2OpenGLRenderWindow::Initialize
void Initialize(void) override
Initialize the rendering window.
vtkSDL2OpenGLRenderWindow::ReleaseCurrent
void ReleaseCurrent() override
Release the current context.
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:48
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkSDL2OpenGLRenderWindow::SetShowWindow
void SetShowWindow(bool val) override
Show or not Show the window.
vtkSDL2OpenGLRenderWindow::Clean
void Clean()
Clean up device contexts, rendering contexts, etc.
vtkSDL2OpenGLRenderWindow::ContextStack
std::stack< SDL_GLContext > ContextStack
Definition: vtkSDL2OpenGLRenderWindow.h:175
vtkSDL2OpenGLRenderWindow::IsCurrent
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkSDL2OpenGLRenderWindow
Definition: vtkSDL2OpenGLRenderWindow.h:33
vtkSDL2OpenGLRenderWindow::MakeCurrent
void MakeCurrent() override
Make this windows OpenGL context the current context.
vtkSDL2OpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
Definition: vtkSDL2OpenGLRenderWindow.h:103
vtkSDL2OpenGLRenderWindow::DEFAULT_BASE_WINDOW_NAME
static const std::string DEFAULT_BASE_WINDOW_NAME
Definition: vtkSDL2OpenGLRenderWindow.h:178
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:83
vtkSDL2OpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSDL2OpenGLRenderWindow::New
static vtkSDL2OpenGLRenderWindow * New()
vtkSDL2OpenGLRenderWindow::CreateAWindow
void CreateAWindow() override
Create a not-off-screen window.
vtkSDL2OpenGLRenderWindow::WindowStack
std::stack< SDL_Window * > WindowStack
Definition: vtkSDL2OpenGLRenderWindow.h:176
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkSDL2OpenGLRenderWindow::vtkSDL2OpenGLRenderWindow
vtkSDL2OpenGLRenderWindow()
vtkOpenGLRenderWindow.h