00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00054 #ifndef __vtkWin32OpenGLRenderWindow_h
00055 #define __vtkWin32OpenGLRenderWindow_h
00056
00057 #include <stdlib.h>
00058 #include "vtkOpenGLRenderWindow.h"
00059 #ifndef VTK_IMPLEMENT_MESA_CXX
00060 #include <GL/gl.h>
00061 #endif
00062
00063 class vtkIdList;
00064
00065 class VTK_RENDERING_EXPORT vtkWin32OpenGLRenderWindow : public vtkOpenGLRenderWindow
00066 {
00067 public:
00068 static vtkWin32OpenGLRenderWindow *New();
00069 vtkTypeMacro(vtkWin32OpenGLRenderWindow,vtkOpenGLRenderWindow);
00070 void PrintSelf(ostream& os, vtkIndent indent);
00071
00073 virtual void Start(void);
00074
00076 void Frame(void);
00077
00079 virtual void WindowInitialize(void);
00080
00082 virtual void Initialize(void);
00083
00085 virtual void SetFullScreen(int);
00086
00088 virtual void WindowRemap(void);
00089
00091 virtual void PrefFullScreen(void);
00092
00094
00095 virtual void SetSize(int,int);
00096 virtual void SetSize(int a[2]) {vtkOpenGLRenderWindow::SetSize(a);};
00098
00100 virtual int *GetSize();
00101
00103
00104 virtual void SetPosition(int,int);
00105 virtual void SetPosition(int a[2]) {vtkOpenGLRenderWindow::SetPosition(a);};
00107
00109 virtual int *GetScreenSize();
00110
00112 virtual int *GetPosition();
00113
00116 virtual void SetWindowName(char *);
00117
00119 void SetWindowInfo(char *);
00120
00122 void SetParentInfo(char *);
00123
00124
00125 virtual void *GetGenericDisplayId() {return (void *)this->ContextId;};
00126 virtual void *GetGenericWindowId() {return (void *)this->WindowId;};
00127 virtual void *GetGenericParentId() {return (void *)this->ParentId;};
00128 virtual void *GetGenericContext() {return (void *)this->DeviceContext;};
00129 virtual void SetDisplayId(void *) {};
00130
00132
00133 virtual HWND GetWindowId();
00134 void SetWindowId(void *foo) {this->SetWindowId((HWND)foo);};
00136
00138 virtual void SetWindowId(HWND);
00139
00141
00142 virtual void SetParentId(HWND);
00143 void SetParentId(void *foo) {this->SetParentId((HWND)foo);};
00145
00146 void SetContextId(HGLRC);
00147 void SetDeviceContext(HDC);
00148
00150
00151 virtual void SetNextWindowId(HWND);
00152
00154
00159 virtual void SetStereoCapableWindow(int capable);
00160
00162 void MakeCurrent();
00163
00166 virtual int GetEventPending();
00167
00169
00171 void SetupMemoryRendering(int x, int y, HDC prn);
00172 void SetupMemoryRendering(HBITMAP hbmp);
00173 void ResumeScreenRendering(void);
00174 HDC GetMemoryDC();
00175 unsigned char *GetMemoryData(){return this->MemoryData;};
00177
00179
00180 virtual void SetupPalette(HDC hDC);
00181 virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug,
00182 int bpp=16, int zbpp=16);
00184
00186 void Clean();
00187
00189
00191 void HideCursor();
00192 void ShowCursor();
00194
00197 virtual void SetOffScreenRendering(int offscreen);
00198
00199 protected:
00200 vtkWin32OpenGLRenderWindow();
00201 ~vtkWin32OpenGLRenderWindow();
00202
00203 HINSTANCE ApplicationInstance;
00204 HPALETTE Palette;
00205 HPALETTE OldPalette;
00206 HGLRC ContextId;
00207 HDC DeviceContext;
00208 BOOL MFChandledWindow;
00209 HWND WindowId;
00210 HWND ParentId;
00211 HWND NextWindowId;
00212 int OwnWindow;
00213 int ScreenSize[2];
00214
00215
00216 BITMAPINFO MemoryDataHeader;
00217 HBITMAP MemoryBuffer;
00218 unsigned char *MemoryData;
00219 HDC MemoryHdc;
00220
00221 int ScreenMapped;
00222 int ScreenWindowSize[2];
00223 HDC ScreenDeviceContext;
00224 int ScreenDoubleBuffer;
00225 HGLRC ScreenContextId;
00226
00227
00228
00229 virtual LRESULT MessageProc(HWND hWnd, UINT message,
00230 WPARAM wParam, LPARAM lParam);
00231
00232 static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
00233 WPARAM wParam, LPARAM lParam);
00234
00235 int CursorHidden;
00236
00237 void ResizeWhileOffscreen(int xsize, int ysize);
00238 void CreateAWindow(int x, int y, int width, int height);
00239 void InitializeApplication();
00240 void CleanUpOffScreenRendering(void);
00241 void CreateOffScreenDC(int xsize, int ysize, HDC aHdc);
00242 void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc);
00243 private:
00244 vtkWin32OpenGLRenderWindow(const vtkWin32OpenGLRenderWindow&);
00245 void operator=(const vtkWin32OpenGLRenderWindow&);
00246 };
00247
00248
00249 #endif
00250