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
00051 #ifndef __vtkWin32OpenGLImageWindow_h
00052 #define __vtkWin32OpenGLImageWindow_h
00053
00054 #include <stdlib.h>
00055 #include "vtkImageWindow.h"
00056 #include "vtkMutexLock.h"
00057
00058 class VTK_RENDERING_EXPORT vtkWin32OpenGLImageWindow : public vtkImageWindow
00059 {
00060 public:
00061 static vtkWin32OpenGLImageWindow *New();
00062 vtkTypeMacro(vtkWin32OpenGLImageWindow,vtkImageWindow);
00063 void PrintSelf(ostream& os, vtkIndent indent);
00064
00065
00066 vtkWin32OpenGLImageWindow *GetOutput(){return this;};
00067
00069 virtual void MakeDefaultWindow();
00070
00072 void SwapBuffers();
00073
00075 void Frame();
00076
00078 void Render();
00079
00081
00082 virtual void SetSize(int,int);
00083 virtual void SetSize(int a[2]) {this->vtkImageWindow::SetSize(a);};
00085
00087
00088 virtual int *GetSize();
00089 virtual void GetSize(int *x, int *y) { this->vtkImageWindow::GetSize(x,y);};
00091
00093
00094 virtual void SetPosition(int,int);
00095 virtual void SetPosition(int a[2]) {this->vtkImageWindow::SetPosition(a);};
00097
00099
00100 virtual int *GetPosition();
00101 virtual void GetPosition(int *x, int *y) { this->vtkImageWindow::GetPosition(x,y);};
00103
00106 virtual void SetWindowName(char *);
00107
00109 void SetWindowInfo(char *);
00110
00112 void SetParentInfo(char *);
00113
00114
00115 virtual void *GetGenericDisplayId() {return (void *)this->ContextId;};
00116 virtual void *GetGenericWindowId() {return (void *)this->WindowId;};
00117 virtual void *GetGenericParentId() {return (void *)this->ParentId;};
00118 virtual void *GetGenericContext() {return (void *)this->DeviceContext;};
00119 virtual void SetDisplayId(void *) {};
00120
00122
00123 virtual HWND GetWindowId();
00124 void SetWindowId(void *foo) {this->SetWindowId((HWND)foo);};
00126
00128 virtual void SetWindowId(HWND);
00129
00131
00132 virtual void SetParentId(HWND);
00133 void SetParentId(void *foo) {this->SetParentId((HWND)foo);};
00135
00136 void SetContextId(HGLRC);
00137 void SetDeviceContext(HDC);
00138
00140
00141 virtual void SetNextWindowId(HWND);
00142
00144
00146
00147 virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
00148 virtual void SetPixelData(int x,int y,int x2,int y2,unsigned char *,
00149 int front);
00151
00153
00154 virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
00155 virtual void SetRGBAPixelData(int x,int y,int x2,int y2,float *,int front,
00156 int blend=0);
00157 virtual void ReleaseRGBAPixelData(float *data);
00159
00161 void MakeCurrent();
00162
00164
00166 void SetupMemoryRendering(int x, int y, HDC prn);
00167 void ResumeScreenRendering();
00168 HDC GetMemoryDC();
00169 unsigned char *GetMemoryData(){return this->MemoryData;};
00171
00173
00174 virtual void OpenGLInit();
00175 virtual void SetupPalette(HDC hDC);
00176 virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug,
00177 int bpp=16, int zbpp=16);
00179
00181 void Clean();
00182
00183 protected:
00184 vtkWin32OpenGLImageWindow();
00185 ~vtkWin32OpenGLImageWindow();
00186
00187 HINSTANCE ApplicationInstance;
00188 HPALETTE Palette;
00189 HPALETTE OldPalette;
00190 HGLRC ContextId;
00191 HDC DeviceContext;
00192 HWND WindowId;
00193 HWND ParentId;
00194 HWND NextWindowId;
00195 int OwnWindow;
00196 int ScreenSize[2];
00197
00198
00199 BITMAPINFO MemoryDataHeader;
00200 HBITMAP MemoryBuffer;
00201 unsigned char *MemoryData;
00202 HDC MemoryHdc;
00203
00204 int ScreenMapped;
00205 int ScreenWindowSize[2];
00206 HDC ScreenDeviceContext;
00207 int ScreenDoubleBuffer;
00208 HGLRC ScreenContextId;
00209
00210
00211
00212 virtual LRESULT MessageProc(HWND hWnd, UINT message,
00213 WPARAM wParam, LPARAM lParam);
00214
00215 static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
00216 WPARAM wParam, LPARAM lParam);
00217
00218
00219 private:
00220 vtkWin32OpenGLImageWindow(const vtkWin32OpenGLImageWindow&);
00221 void operator=(const vtkWin32OpenGLImageWindow&);
00222 };
00223
00224
00225 #endif
00226