Cloned library of VTK-5.0.0 with extra build files for internal package management.
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.
 
 
 
 
 
 

263 lines
8.2 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkCocoaRenderWindow.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 vtkCocoaRenderWindow - Cocoa OpenGL rendering window
//
// .SECTION Description
// vtkCocoaRenderWindow is a concrete implementation of the abstract
// class vtkOpenGLRenderWindow. It uses Objective-C++, and the OpenGL and
// Cocoa APIs. This class's default behaviour is to create an NSWindow and
// a vtkCocoaGLView which are used together to draw all vtk stuff into.
// If you already have an NSWindow and vtkCocoaGLView and you want this
// class to use them you must call both SetWindowId() and SetDisplayId()
// early on (before WindowInitialize() is executed).
//
// .SECTION See Also
// vtkOpenGLRenderWindow vtkCocoaGLView
// .SECTION Warning
// This header must be in C++ only because it is included by .cxx files.
// That means no Objective-C may be used. That's why some instance variables
// are void* instead of what they really should be.
#ifndef __vtkCocoaRenderWindow_h
#define __vtkCocoaRenderWindow_h
#include "vtkOpenGLRenderWindow.h"
class VTK_RENDERING_EXPORT vtkCocoaRenderWindow : public vtkOpenGLRenderWindow
{
public:
static vtkCocoaRenderWindow *New();
vtkTypeRevisionMacro(vtkCocoaRenderWindow,vtkOpenGLRenderWindow);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Begin the rendering process.
virtual void Start();
// Description:
// Finish the rendering process.
virtual void Frame();
// Description:
// Specify various window parameters.
virtual void WindowConfigure();
// Description:
// Initialize the window for rendering.
virtual void WindowInitialize();
// Description:
// Initialize the rendering window.
virtual void Initialize();
// Description:
// Change the window to fill the entire screen.
virtual void SetFullScreen(int);
// Description:
// Remap the window.
virtual void WindowRemap();
// Description:
// Set the preferred window size to full screen.
virtual void PrefFullScreen();
// Description:
// Set the size of the window.
virtual void SetSize(int*);
virtual void SetSize(int,int);
// Description:
// Get the current size of the window.
virtual int *GetSize();
// Description:
// Set the position of the window.
virtual void SetPosition(int*);
virtual void SetPosition(int,int);
// Description:
// Return the scrren size.
virtual int *GetScreenSize();
// Description:
// Get the position in screen coordinates of the window.
virtual int *GetPosition();
// Description:
// Set the name of the window. This appears at the top of the window
// normally.
virtual void SetWindowName(const char *);
void SetNextWindowInfo(char *)
{
vtkWarningMacro("SetNextWindowInfo not implemented (WindowRemap not implemented).");
}
virtual void *GetGenericDisplayId() {return this->NSViewId;}
virtual void *GetGenericWindowId() {return this->WindowId;}
virtual void *GetGenericContext() {return this->ContextId;}
// Description:
// Returns the NSView* associated with this vtkRenderWindow.
virtual void* GetDisplayId();
// Description:
// Sets the NSView* associated with this vtkRenderWindow. This class' default
// behaviour, that is, if you never call this SetDisplayId()/SetWindowId() is
// to create an NSWindow and a vtkCocoaGLView (NSView subclass) which are used
// together to draw all vtk stuff into. If you already have an NSWindow and
// NSView and you want this class to use them you must call both SetWindowId()
// and SetDisplayId() early on (before WindowInitialize() is executed). In the
// case of Java, you should call only SetDisplayId().
virtual void SetDisplayId(void *);
virtual void SetParentId(void *)
{
vtkWarningMacro("Method not implemented.");
}
virtual void* GetGenericParentId()
{
vtkWarningMacro("Method not implemented.");
return 0;
}
virtual void* GetGenericDrawable()
{
vtkWarningMacro("Method not implemented.");
return 0;
}
virtual void SetWindowInfo(char*)
{
vtkWarningMacro("Method not implemented.");
}
virtual void SetParentInfo(char*)
{
vtkWarningMacro("Method not implemented.");
}
// Description:
// Returns the NSWindow* associated with this vtkRenderWindow.
virtual void *GetWindowId();
// Description:
// Sets the NSWindow* associated with this vtkRenderWindow. This class' default
// behaviour, that is, if you never call this SetDisplayId()/SetWindowId() is
// to create an NSWindow and a vtkCocoaGLView (NSView subclass) which are used
// together to draw all vtk stuff into. If you already have an NSWindow and
// NSView and you want this class to use them you must call both SetWindowId()
// and SetDisplayId() early on (before WindowInitialize() is executed). In the
// case of Java, you should call only SetDisplayId().
virtual void SetWindowId(void *);
void SetNextWindowId(void*)
{
vtkWarningMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
}
// Description:
// Update system if needed due to stereo rendering.
virtual void StereoUpdate();
// Description:
// Prescribe that the window be created in a stereo-capable mode. This
// method must be called before the window is realized. This method
// overrrides the superclass method since this class can actually check
// whether the window has been realized yet.
virtual void SetStereoCapableWindow(int capable);
// Description:
// Make this windows OpenGL context the current context.
virtual void MakeCurrent();
// Description:
// Update this window's OpenGL context, e.g. when the window is resized.
void UpdateContext();
// 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:
// If called, allow MakeCurrent() to skip cache-check when called.
// MakeCurrent() reverts to original behavior of cache-checking
// on the next render.
virtual void SetForceMakeCurrent();
// Description:
// Check to see if an event is pending for this window.
// This is a useful check to abort a long render.
virtual int GetEventPending();
// Description:
// Initialize OpenGL for this window.
virtual void SetupPalette(void *hDC);
virtual void SetupPixelFormat(void *hDC, void *dwFlags, int debug,
int bpp=16, int zbpp=16);
// Description:
// Clean up device contexts, rendering contexts, etc.
void Finalize();
// Description:
// Register a texture name with this render window
void RegisterTextureResource (GLuint id);
// Description:
// Get the size of the depth buffer.
int GetDepthBufferSize();
// 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.
virtual void HideCursor();
virtual void ShowCursor();
protected:
vtkCocoaRenderWindow();
~vtkCocoaRenderWindow();
void CreateGLContext();
private:
vtkCocoaRenderWindow(const vtkCocoaRenderWindow&); // Not implemented.
void operator=(const vtkCocoaRenderWindow&); // Not implemented.
private:
void *ContextId; // really an NSOpenGLContext*
void *WindowId; // really an NSWindow*
void *NSViewId; // really an NSView* (usually but not necessarily a vtkCocoaGLView*)
void *PixelFormat; // really an NSOpenGLPixelFormat*
int WindowCreated;
int ViewCreated;
int CursorHidden;
void *AutoreleasePool; // really an NSAutoreleasePool*
int ForceMakeCurrent;
char *Capabilities;
};
#endif