/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkXMesaRenderWindow.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 vtkXMesaRenderWindow - Mesa rendering window // .SECTION Description // vtkXMesaRenderWindow 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 __vtkXMesaRenderWindow_h #define __vtkXMesaRenderWindow_h #include "vtkMesaRenderWindow.h" #include // Needed for X types used in the public interface #include // Needed for X types used in the public interface class vtkIdList; class vtkXMesaRenderWindowInternal; class VTK_RENDERING_EXPORT vtkXMesaRenderWindow : public vtkMesaRenderWindow { public: static vtkXMesaRenderWindow *New(); vtkTypeRevisionMacro(vtkXMesaRenderWindow,vtkMesaRenderWindow); 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. virtual void Initialize(void); // Description: // Shut-down all resources initialized by Initialize() 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); 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: // Get the properties available at runtime that would result in // the best Xwindow for 3D rendering. virtual int GetEventPending(); // Description: // Set this RenderWindow's X window id to a pre-existing window. void SetWindowInfo(char *info); void SetNextWindowInfo(char *); // 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: vtkXMesaRenderWindow(); ~vtkXMesaRenderWindow(); vtkXMesaRenderWindowInternal *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: vtkXMesaRenderWindow(const vtkXMesaRenderWindow&); // Not implemented. void operator=(const vtkXMesaRenderWindow&); // Not implemented. }; #endif