You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
252 lines
7.6 KiB
252 lines
7.6 KiB
2 years ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: $RCSfile: vtkXOpenGLRenderWindow.h,v $
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
// .NAME vtkXOpenGLRenderWindow - OpenGL rendering window
|
||
|
// .SECTION Description
|
||
|
// vtkXOpenGLRenderWindow is a concrete implementation of the abstract class
|
||
|
// vtkRenderWindow. vtkOpenGLRenderer interfaces to the OpenGL graphics
|
||
|
// library. Application programmers should normally use vtkRenderWindow
|
||
|
// instead of the OpenGL specific version.
|
||
|
|
||
|
#ifndef __vtkXOpenGLRenderWindow_h
|
||
|
#define __vtkXOpenGLRenderWindow_h
|
||
|
|
||
|
#include "vtkOpenGLRenderWindow.h"
|
||
|
#include <X11/Xlib.h> // Needed for X types used in the public interface
|
||
|
#include <X11/Xutil.h> // Needed for X types used in the public interface
|
||
|
|
||
|
class vtkIdList;
|
||
|
class vtkXOpenGLRenderWindowInternal;
|
||
|
|
||
|
class VTK_RENDERING_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow
|
||
|
{
|
||
|
public:
|
||
|
static vtkXOpenGLRenderWindow *New();
|
||
|
vtkTypeRevisionMacro(vtkXOpenGLRenderWindow,vtkOpenGLRenderWindow);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent);
|
||
|
|
||
|
// Description:
|
||
|
// Begin the rendering process.
|
||
|
virtual void Start(void);
|
||
|
|
||
|
// Description:
|
||
|
// End the rendering process and display the image.
|
||
|
virtual void Frame(void);
|
||
|
|
||
|
// Description:
|
||
|
// Initialize the window for rendering.
|
||
|
virtual void WindowInitialize(void);
|
||
|
|
||
|
// Description:
|
||
|
// Initialize the rendering window. This will setup all system-specific
|
||
|
// resources. This method and Finalize() must be symmetric and it
|
||
|
// should be possible to call them multiple times, even changing WindowId
|
||
|
// in-between. This is what WindowRemap does.
|
||
|
virtual void Initialize(void);
|
||
|
|
||
|
// Description:
|
||
|
// "Deinitialize" the rendering window. This will shutdown all system-specific
|
||
|
// resources. After having called this, it should be possible to destroy
|
||
|
// a window that was used for a SetWindowId() call without any ill effects.
|
||
|
virtual void Finalize(void);
|
||
|
|
||
|
// Description:
|
||
|
// Change the window to fill the entire screen.
|
||
|
virtual void SetFullScreen(int);
|
||
|
|
||
|
// Description:
|
||
|
// Resize the window.
|
||
|
virtual void WindowRemap(void);
|
||
|
|
||
|
// Description:
|
||
|
// Set the preferred window size to full screen.
|
||
|
virtual void PrefFullScreen(void);
|
||
|
|
||
|
// Description:
|
||
|
// Specify the size of the rendering window.
|
||
|
virtual void SetSize(int,int);
|
||
|
virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);};
|
||
|
|
||
|
// Description:
|
||
|
// Get the X properties of an ideal rendering window.
|
||
|
virtual Colormap GetDesiredColormap();
|
||
|
virtual Visual *GetDesiredVisual();
|
||
|
virtual XVisualInfo *GetDesiredVisualInfo();
|
||
|
virtual int GetDesiredDepth();
|
||
|
|
||
|
// Description:
|
||
|
// Prescribe that the window be created in a stereo-capable mode. This
|
||
|
// method must be called before the window is realized. This method
|
||
|
// overrides the superclass method since this class can actually check
|
||
|
// whether the window has been realized yet.
|
||
|
virtual void SetStereoCapableWindow(int capable);
|
||
|
|
||
|
// Description:
|
||
|
// Make this window the current OpenGL context.
|
||
|
void MakeCurrent();
|
||
|
|
||
|
// Description:
|
||
|
// If called, allow MakeCurrent() to skip cache-check when called.
|
||
|
// MakeCurrent() reverts to original behavior of cache-checking
|
||
|
// on the next render.
|
||
|
void SetForceMakeCurrent();
|
||
|
|
||
|
// Description:
|
||
|
// Get report of capabilities for the render window
|
||
|
const char *ReportCapabilities();
|
||
|
|
||
|
// Description:
|
||
|
// Does this render window support OpenGL? 0-false, 1-true
|
||
|
int SupportsOpenGL();
|
||
|
|
||
|
// Description:
|
||
|
// Is this render window using hardware acceleration? 0-false, 1-true
|
||
|
int IsDirect();
|
||
|
|
||
|
// Description:
|
||
|
// Xwindow get set functions
|
||
|
virtual void *GetGenericDisplayId() {return (void *)this->GetDisplayId();};
|
||
|
virtual void *GetGenericWindowId();
|
||
|
virtual void *GetGenericParentId() {return (void *)this->ParentId;};
|
||
|
virtual void *GetGenericContext();
|
||
|
virtual void *GetGenericDrawable() {return (void *)this->WindowId;};
|
||
|
|
||
|
// Description:
|
||
|
// Get the size of the screen in pixels
|
||
|
virtual int *GetScreenSize();
|
||
|
|
||
|
// Description:
|
||
|
// Get the position in screen coordinates (pixels) of the window.
|
||
|
virtual int *GetPosition();
|
||
|
|
||
|
// Description:
|
||
|
// Get this RenderWindow's X display id.
|
||
|
Display *GetDisplayId();
|
||
|
|
||
|
// Description:
|
||
|
// Set the X display id for this RenderWindow to use to a pre-existing
|
||
|
// X display id.
|
||
|
void SetDisplayId(Display *);
|
||
|
void SetDisplayId(void *);
|
||
|
|
||
|
// Description:
|
||
|
// Get this RenderWindow's parent X window id.
|
||
|
Window GetParentId();
|
||
|
|
||
|
// Description:
|
||
|
// Sets the parent of the window that WILL BE created.
|
||
|
void SetParentId(Window);
|
||
|
void SetParentId(void *);
|
||
|
|
||
|
// Description:
|
||
|
// Get this RenderWindow's X window id.
|
||
|
Window GetWindowId();
|
||
|
|
||
|
// Description:
|
||
|
// Set this RenderWindow's X window id to a pre-existing window.
|
||
|
void SetWindowId(Window);
|
||
|
void SetWindowId(void *);
|
||
|
|
||
|
// Description:
|
||
|
// Specify the X window id to use if a WindowRemap is done.
|
||
|
void SetNextWindowId(Window);
|
||
|
|
||
|
// Description:
|
||
|
// Set the window id of the new window once a WindowRemap is done.
|
||
|
// This is the generic prototype as required by the vtkRenderWindow
|
||
|
// parent.
|
||
|
void SetNextWindowId(void *);
|
||
|
|
||
|
void SetWindowName(const char *);
|
||
|
|
||
|
// Description:
|
||
|
// Move the window to a new position on the display.
|
||
|
void SetPosition(int,int);
|
||
|
void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);};
|
||
|
|
||
|
// Description:
|
||
|
// Hide or Show the mouse cursor, it is nice to be able to hide the
|
||
|
// default cursor if you want VTK to display a 3D cursor instead.
|
||
|
void HideCursor();
|
||
|
void ShowCursor();
|
||
|
|
||
|
// Description:
|
||
|
// Change the shape of the cursor
|
||
|
virtual void SetCurrentCursor(int);
|
||
|
|
||
|
// Description:
|
||
|
// Check to see if a mouse button has been pressed.
|
||
|
// All other events are ignored by this method.
|
||
|
// This is a useful check to abort a long render.
|
||
|
virtual int GetEventPending();
|
||
|
|
||
|
// Description:
|
||
|
// Set this RenderWindow's X window id to a pre-existing window.
|
||
|
void SetWindowInfo(char *info);
|
||
|
|
||
|
// Description:
|
||
|
// Set the window info that will be used after WindowRemap()
|
||
|
void SetNextWindowInfo(char *info);
|
||
|
|
||
|
// Description:
|
||
|
// Sets the X window id of the window that WILL BE created.
|
||
|
void SetParentInfo(char *info);
|
||
|
|
||
|
// Description:
|
||
|
// This computes the size of the render window
|
||
|
// before calling the supper classes render
|
||
|
void Render();
|
||
|
|
||
|
// Description:
|
||
|
// Render without displaying the window.
|
||
|
void SetOffScreenRendering(int i);
|
||
|
|
||
|
protected:
|
||
|
vtkXOpenGLRenderWindow();
|
||
|
~vtkXOpenGLRenderWindow();
|
||
|
|
||
|
vtkXOpenGLRenderWindowInternal *Internal;
|
||
|
|
||
|
Window ParentId;
|
||
|
Window WindowId;
|
||
|
Window NextWindowId;
|
||
|
Display *DisplayId;
|
||
|
Colormap ColorMap;
|
||
|
int OwnWindow;
|
||
|
int OwnDisplay;
|
||
|
int ScreenSize[2];
|
||
|
int CursorHidden;
|
||
|
int ForceMakeCurrent;
|
||
|
int UsingHardware;
|
||
|
char *Capabilities;
|
||
|
|
||
|
// we must keep track of the cursors we are using
|
||
|
Cursor XCArrow;
|
||
|
Cursor XCSizeAll;
|
||
|
Cursor XCSizeNS;
|
||
|
Cursor XCSizeWE;
|
||
|
Cursor XCSizeNE;
|
||
|
Cursor XCSizeNW;
|
||
|
Cursor XCSizeSE;
|
||
|
Cursor XCSizeSW;
|
||
|
|
||
|
private:
|
||
|
vtkXOpenGLRenderWindow(const vtkXOpenGLRenderWindow&); // Not implemented.
|
||
|
void operator=(const vtkXOpenGLRenderWindow&); // Not implemented.
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
#endif
|