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.
 
 
 
 
 
 

269 lines
8.4 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkWin32OpenGLRenderWindow.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 vtkWin32OpenGLRenderWindow - OpenGL rendering window
// .SECTION Description
// vtkWin32OpenGLRenderWindow is a concrete implementation of the abstract
// class vtkRenderWindow. vtkWin32OpenGLRenderer interfaces to the standard
// OpenGL graphics library in the Windows/NT environment..
#ifndef __vtkWin32OpenGLRenderWindow_h
#define __vtkWin32OpenGLRenderWindow_h
#include "vtkOpenGLRenderWindow.h"
class vtkIdList;
class VTK_RENDERING_EXPORT vtkWin32OpenGLRenderWindow : public vtkOpenGLRenderWindow
{
public:
static vtkWin32OpenGLRenderWindow *New();
vtkTypeRevisionMacro(vtkWin32OpenGLRenderWindow,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.
void Frame(void);
// Description:
// Create the window
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:
// Finalize 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:
// Remap the window.
virtual void WindowRemap(void);
// Description:
// Set the preferred window size to full screen.
virtual void PrefFullScreen(void);
// Description:
// Set the size of the window.
virtual void SetSize(int,int);
virtual void SetSize(int a[2]) {vtkOpenGLRenderWindow::SetSize(a);};
// Description:
// Get the current size of the window.
virtual int *GetSize();
// Description:
// Set the position of the window.
virtual void SetPosition(int,int);
virtual void SetPosition(int a[2]) {vtkOpenGLRenderWindow::SetPosition(a);};
// Description:
// Return the screen 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 *);
// Description:
// Sets the WindowInfo that will be used after a WindowRemap.
void SetNextWindowInfo(char *);
// Description:
// Sets the HWND id of the window that WILL BE created.
void SetParentInfo(char *);
//BTX
virtual void *GetGenericDisplayId() {return (void *)this->ContextId;};
virtual void *GetGenericWindowId() {return (void *)this->WindowId;};
virtual void *GetGenericParentId() {return (void *)this->ParentId;};
virtual void *GetGenericContext() {return (void *)this->DeviceContext;};
virtual void *GetGenericDrawable() {return (void *)this->WindowId;};
virtual void SetDisplayId(void *);
// Description:
// Get the window id.
virtual HWND GetWindowId();
void SetWindowId(void *foo) {this->SetWindowId((HWND)foo);};
// Description:
// Set the window id to a pre-existing window.
virtual void SetWindowId(HWND);
// Description:
// Set the window's parent id to a pre-existing window.
virtual void SetParentId(HWND);
void SetParentId(void *foo) {this->SetParentId((HWND)foo);};
void SetContextId(HGLRC); // hsr
void SetDeviceContext(HDC); // hsr
// Description:
// Set the window id of the new window once a WindowRemap is done.
virtual void SetNextWindowId(HWND);
// 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.
virtual void SetNextWindowId(void *arg);
//ETX
// 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 windows OpenGL context the current context.
void MakeCurrent();
// 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:
// 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:
// These methods can be used by MFC applications
// to support print preview and printing, or more
// general rendering into memory.
void SetupMemoryRendering(int x, int y, HDC prn);
void SetupMemoryRendering(HBITMAP hbmp);
void ResumeScreenRendering(void);
HDC GetMemoryDC();
unsigned char *GetMemoryData(){return this->MemoryData;};
// Description:
// Initialize OpenGL for this window.
virtual void SetupPalette(HDC hDC);
virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug,
int bpp=16, int zbpp=16);
// Description:
// Clean up device contexts, rendering contexts, etc.
void Clean();
// 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.
// Set cursor position in window (note that (0,0) is the lower left
// corner).
void HideCursor();
void ShowCursor();
void SetCursorPosition(int x, int y);
// Description:
// Change the shape of the cursor
virtual void SetCurrentCursor(int);
// Description:
// Override the default implementation so that we can actively switch between
// on and off screen rendering.
virtual void SetOffScreenRendering(int offscreen);
protected:
vtkWin32OpenGLRenderWindow();
~vtkWin32OpenGLRenderWindow();
HINSTANCE ApplicationInstance;
HPALETTE Palette;
HPALETTE OldPalette;
HGLRC ContextId;
HDC DeviceContext;
BOOL MFChandledWindow;
HWND WindowId;
HWND ParentId;
HWND NextWindowId;
int OwnWindow;
int ScreenSize[2];
// the following is used to support rendering into memory
BITMAPINFO MemoryDataHeader;
HBITMAP MemoryBuffer;
unsigned char *MemoryData; // the data in the DIBSection
HDC MemoryHdc;
int ScreenMapped;
int ScreenWindowSize[2];
HDC ScreenDeviceContext;
int ScreenDoubleBuffer;
HGLRC ScreenContextId;
//BTX
// message handler
virtual LRESULT MessageProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam);
//ETX
int CursorHidden;
int ForceMakeCurrent;
char *Capabilities;
void ResizeWhileOffscreen(int xsize, int ysize);
void CreateAWindow(int x, int y, int width, int height);
void InitializeApplication();
void CleanUpOffScreenRendering(void);
void CreateOffScreenDC(int xsize, int ysize, HDC aHdc);
void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc);
private:
vtkWin32OpenGLRenderWindow(const vtkWin32OpenGLRenderWindow&); // Not implemented.
void operator=(const vtkWin32OpenGLRenderWindow&); // Not implemented.
};
#endif