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.
 
 
 
 
 
 

250 lines
7.8 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkCarbonRenderWindow.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 vtkCarbonRenderWindow - Carbon OpenGL rendering window
//
// .SECTION Description
// vtkCarbonRenderWindow is a concrete implementation of the abstract
// class vtkOpenGLRenderWindow. vtkCarbonRenderWindow interfaces to the
// OpenGL graphics library using the Carbon API on Mac OSX.
#ifndef __vtkCarbonRenderWindow_h
#define __vtkCarbonRenderWindow_h
#include "vtkOpenGLRenderWindow.h"
#include <Carbon/Carbon.h> // Carbon and MAC specific
#include <AGL/agl.h> // Carbon and MAC specific
class VTK_RENDERING_EXPORT vtkCarbonRenderWindow : public vtkOpenGLRenderWindow
{
public:
static vtkCarbonRenderWindow *New();
vtkTypeRevisionMacro(vtkCarbonRenderWindow,vtkOpenGLRenderWindow);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Begin the rendering process.
void Start();
// Description:
// End the rendering process and display the image.
void Frame();
// Description:
// Specify various window parameters.
virtual void WindowConfigure();
// Description:
// Create the window.
virtual void WindowInitialize();
// 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();
// Description:
// Finalize the rendering window. This will shutdown all system-specifc
// 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();
// 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 a[2]);
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 *);
// Description:
// Set this RenderWindow's window id to a pre-existing window.
void SetWindowInfo(char *);
void SetNextWindowInfo(char *)
{
vtkWarningMacro("SetNextWindowInfo not implemented (WindowRemap not implemented).");
}
//BTX
virtual void *GetGenericDisplayId() {return NULL;};
virtual void *GetGenericWindowId() {return (void *)this->WindowId;};
virtual void *GetGenericParentId() {return (void *)this->ParentId;};
virtual AGLContext GetContextId() {return this->ContextId;};
virtual void *GetGenericContext() {return (void *)this->ContextId;};
virtual void SetDisplayId(void *) {};
virtual void* GetGenericDrawable()
{
vtkWarningMacro("GetGenericDrawable Method not implemented.");
return 0;
}
void SetParentInfo(char*)
{
vtkWarningMacro("SetParentInfo Method not implemented.");
}
// Description:
// Get the HIView window pointer.
virtual HIViewRef GetWindowId();
// Set the HIView window pointer.
void SetWindowId(void *foo) {this->SetWindowId((HIViewRef)foo);};
void SetNextWindowId(void*)
{
vtkWarningMacro("SetNextWindowId not implemented (WindowRemap not implemented).");
}
// Description:
// Set the parent HIView.
virtual void SetParentId(HIViewRef);
void SetParentId(void *foo) {this->SetParentId((HIViewRef)foo);};
// Description:
// Set the HIVIew pointer to a pre-existing window.
virtual void SetWindowId(HIViewRef);
// Description:
// Set the root window id. Use this when using non-HIView GUIs.
void SetRootWindow(WindowPtr win);
WindowPtr GetRootWindow();
//ETX
// supply base class virtual function
vtkSetMacro(MultiSamples,int);
vtkGetMacro(MultiSamples,int);
// 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.
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:
// 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 Clean();
// 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.
void HideCursor();
void ShowCursor();
void UpdateSizeAndPosition(int xPos, int yPos, int xSize, int ySize);
// Description:
// Fix the GL region. The AGL_BUFFER_RECT and AGL_CLIP_REGION will be updated
void UpdateGLRegion();
protected:
vtkCarbonRenderWindow();
~vtkCarbonRenderWindow();
int ApplicationInitialized; // Toolboxen initialized?
Boolean fAcceleratedMust; // input: must renderer be accelerated?
Boolean draggable; // input: is the window draggable?
GLint aglAttributes[64]; // input: pixel format attributes always required
// (reset to what was actually allocated)
SInt32 VRAM; // input: minimum VRAM; output: actual
// (if successful otherwise input)
SInt32 textureRAM; // input: amount of texture RAM required on card;
// output: same (used in allocation)
AGLPixelFormat fmt; // input: none; output pixel format...
AGLContext ContextId;
HIViewRef WindowId;
HIViewRef ParentId;
WindowPtr RootWindow;
int OwnWindow;
int ScreenSize[2];
int CursorHidden;
int ForceMakeCurrent;
// data and handlers to keep the GL view coincident with the HIView
EventHandlerUPP RegionEventHandlerUPP;
EventHandlerRef RegionEventHandler;
static OSStatus RegionEventProcessor(EventHandlerCallRef er, EventRef event, void*);
void CreateAWindow(int x, int y, int width, int height);
void InitializeApplication();
private:
vtkCarbonRenderWindow(const vtkCarbonRenderWindow&); // Not implemented.
void operator=(const vtkCarbonRenderWindow&); // Not implemented.
};
#endif