Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

Rendering/vtkWin32OpenGLRenderWindow.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkWin32OpenGLRenderWindow.h,v $
00005   Language:  C++
00006 
00007 
00008 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen 
00009 All rights reserved.
00010 
00011 Redistribution and use in source and binary forms, with or without
00012 modification, are permitted provided that the following conditions are met:
00013 
00014  * Redistributions of source code must retain the above copyright notice,
00015    this list of conditions and the following disclaimer.
00016 
00017  * Redistributions in binary form must reproduce the above copyright notice,
00018    this list of conditions and the following disclaimer in the documentation
00019    and/or other materials provided with the distribution.
00020 
00021  * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names
00022    of any contributors may be used to endorse or promote products derived
00023    from this software without specific prior written permission.
00024 
00025  * Modified source versions must be plainly marked as such, and must not be
00026    misrepresented as being the original software.
00027 
00028 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00029 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00030 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00031 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
00032 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00033 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00034 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00035 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00036 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00037 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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   //BTX
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);    // hsr
00147   void  SetDeviceContext(HDC);  // hsr
00148 
00150 
00151   virtual void  SetNextWindowId(HWND);
00152   //ETX
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   // the following is used to support rendering into memory
00216   BITMAPINFO MemoryDataHeader;
00217   HBITMAP MemoryBuffer;
00218   unsigned char *MemoryData;    // the data in the DIBSection
00219   HDC MemoryHdc;
00220 
00221   int ScreenMapped;
00222   int ScreenWindowSize[2];
00223   HDC ScreenDeviceContext;
00224   int ScreenDoubleBuffer;
00225   HGLRC ScreenContextId;
00226 
00227   //BTX
00228   // message handler
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   //ETX
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&);  // Not implemented.
00245   void operator=(const vtkWin32OpenGLRenderWindow&);  // Not implemented.
00246 };
00247 
00248 
00249 #endif
00250 

Generated on Thu Mar 28 14:19:35 2002 for VTK by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001