00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00029
#ifndef __vtkWin32OpenGLRenderWindow_h
00030
#define __vtkWin32OpenGLRenderWindow_h
00031
00032
#include "vtkOpenGLRenderWindow.h"
00033
00034
#ifndef VTK_IMPLEMENT_MESA_CXX
00035
#include <GL/gl.h>
00036
#endif
00037
00038
class vtkIdList;
00039
00040 class VTK_RENDERING_EXPORT vtkWin32OpenGLRenderWindow :
public vtkOpenGLRenderWindow
00041 {
00042
public:
00043
static vtkWin32OpenGLRenderWindow *
New();
00044 vtkTypeRevisionMacro(vtkWin32OpenGLRenderWindow,
vtkOpenGLRenderWindow);
00045
void PrintSelf(ostream& os,
vtkIndent indent);
00046
00048
virtual void Start(
void);
00049
00051
void Frame(
void);
00052
00054
virtual void WindowInitialize(
void);
00055
00060
virtual void Initialize(
void);
00061
00066
virtual void Finalize(
void);
00067
00069
virtual void SetFullScreen(
int);
00070
00072
virtual void WindowRemap(
void);
00073
00075
virtual void PrefFullScreen(
void);
00076
00078
00079
virtual void SetSize(
int,
int);
00080 virtual void SetSize(
int a[2]) {
vtkOpenGLRenderWindow::SetSize(a);};
00082
00084
virtual int *
GetSize();
00085
00087
00088
virtual void SetPosition(
int,
int);
00089 virtual void SetPosition(
int a[2]) {
vtkOpenGLRenderWindow::SetPosition(a);};
00091
00093
virtual int *GetScreenSize();
00094
00096
virtual int *
GetPosition();
00097
00100
virtual void SetWindowName(
const char *);
00101
00103
void SetWindowInfo(
char *);
00104
00106
void SetNextWindowInfo(
char *);
00107
00109
void SetParentInfo(
char *);
00110
00111
00112 virtual void *
GetGenericDisplayId() {
return (
void *)this->ContextId;};
00113 virtual void *
GetGenericWindowId() {
return (
void *)this->WindowId;};
00114 virtual void *
GetGenericParentId() {
return (
void *)this->ParentId;};
00115 virtual void *
GetGenericContext() {
return (
void *)this->DeviceContext;};
00116 virtual void *
GetGenericDrawable() {
return (
void *)this->WindowId;};
00117
virtual void SetDisplayId(
void *);
00118
00120
00121
virtual HWND GetWindowId();
00122 void SetWindowId(
void *foo) {this->
SetWindowId((HWND)foo);};
00124
00126
virtual void SetWindowId(HWND);
00127
00129
00130
virtual void SetParentId(HWND);
00131 void SetParentId(
void *foo) {this->
SetParentId((HWND)foo);};
00133
00134
void SetContextId(HGLRC);
00135
void SetDeviceContext(HDC);
00136
00138
virtual void SetNextWindowId(HWND);
00139
00142
virtual void SetNextWindowId(
void *arg);
00143
00144
00145
00150
virtual void SetStereoCapableWindow(
int capable);
00151
00153
void MakeCurrent();
00154
00156
const char *
ReportCapabilities();
00157
00159
int SupportsOpenGL();
00160
00162
int IsDirect();
00163
00167
virtual int GetEventPending();
00168
00170
00172
void SetupMemoryRendering(
int x,
int y, HDC prn);
00173
void SetupMemoryRendering(HBITMAP hbmp);
00174
void ResumeScreenRendering(
void);
00175 HDC GetMemoryDC();
00176 unsigned char *GetMemoryData(){
return this->MemoryData;};
00178
00180
00181
virtual void SetupPalette(HDC hDC);
00182
virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags,
int debug,
00183
int bpp=16,
int zbpp=16);
00185
00187
void Clean();
00188
00190
00193
void HideCursor();
00194
void ShowCursor();
00195
void SetCursorPosition(
int x,
int y);
00197
00199
virtual void SetCurrentCursor(
int);
00200
00203
virtual void SetOffScreenRendering(
int offscreen);
00204
00205
protected:
00206 vtkWin32OpenGLRenderWindow();
00207 ~vtkWin32OpenGLRenderWindow();
00208
00209 HINSTANCE ApplicationInstance;
00210 HPALETTE Palette;
00211 HPALETTE OldPalette;
00212 HGLRC ContextId;
00213 HDC DeviceContext;
00214 BOOL MFChandledWindow;
00215 HWND WindowId;
00216 HWND ParentId;
00217 HWND NextWindowId;
00218 int OwnWindow;
00219 int ScreenSize[2];
00220
00221
00222 BITMAPINFO MemoryDataHeader;
00223 HBITMAP MemoryBuffer;
00224 unsigned char *MemoryData;
00225 HDC MemoryHdc;
00226
00227 int ScreenMapped;
00228 int ScreenWindowSize[2];
00229 HDC ScreenDeviceContext;
00230 int ScreenDoubleBuffer;
00231 HGLRC ScreenContextId;
00232
00233
00234
00235
virtual LRESULT MessageProc(HWND hWnd, UINT message,
00236 WPARAM wParam, LPARAM lParam);
00237
00238
static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
00239 WPARAM wParam, LPARAM lParam);
00240
00241 int CursorHidden;
00242 int ForceMakeCurrent;
00243
00244 char *Capabilities;
00245
00246
void ResizeWhileOffscreen(
int xsize,
int ysize);
00247
void CreateAWindow(
int x,
int y,
int width,
int height);
00248
void InitializeApplication();
00249
void CleanUpOffScreenRendering(
void);
00250
void CreateOffScreenDC(
int xsize,
int ysize, HDC aHdc);
00251
void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc);
00252
private:
00253 vtkWin32OpenGLRenderWindow(
const vtkWin32OpenGLRenderWindow&);
00254
void operator=(
const vtkWin32OpenGLRenderWindow&);
00255 };
00256
00257
00258
#endif
00259