1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
|
/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkWinCEOpenGLRenderWindow.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 vtkWinCEOpenGLRenderWindow - OpenGL rendering window
// .SECTION Description
// vtkWinCEOpenGLRenderWindow is a concrete implementation of the abstract
// class vtkRenderWindow. vtkWinCEOpenGLRenderer interfaces to the standard
// OpenGL graphics library in the Windows/NT environment..
#ifndef __vtkWinCEOpenGLRenderWindow_h
#define __vtkWinCEOpenGLRenderWindow_h
#include "vtkOpenGLRenderWindow.h"
#include "GL/osmesa.h" // Needed for Mesa types
class vtkIdList;
class VTK_RENDERING_EXPORT vtkWinCEOpenGLRenderWindow : public vtkOpenGLRenderWindow
{
public:
static vtkWinCEOpenGLRenderWindow *New();
vtkTypeRevisionMacro(vtkWinCEOpenGLRenderWindow,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);
// Description:
// Get the current size of the window.
virtual int *GetSize();
// Description:
// Set the position of the window.
virtual void SetPosition(int,int);
// 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(char *);
// Description:
// Set this RenderWindow's window id to a pre-existing window.
void SetWindowInfo(char *);
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->OffScreenContextId;};
virtual void *GetGenericWindowId() {return (void *)this->WindowId;};
virtual void *GetGenericParentId() {return (void *)this->ParentId;};
virtual void *GetGenericContext() {return (void *)this->DeviceContext;};
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);};
// Description:
// Set the window id of the new window once a WindowRemap is done.
virtual void SetNextWindowId(HWND);
virtual void SetNextWindowId(void *);
//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:
// If called, allow MakeCurrent() to skip cache-check when called.
// MakeCurrent() reverts to original behavior of cache-checking
// on the next render.
void SetForceMakeCurrent();
// Description:
// Check to see if an event is pending for this window.
// This is a useful check to abort a long render.
virtual int GetEventPending();
// 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.
void HideCursor();
void ShowCursor();
protected:
vtkWinCEOpenGLRenderWindow();
~vtkWinCEOpenGLRenderWindow();
HINSTANCE ApplicationInstance;
OSMesaContext OffScreenContextId;
void *OffScreenWindow;
HDC DeviceContext;
HWND WindowId;
HWND ParentId;
HWND NextWindowId;
int OwnWindow;
int ScreenSize[2];
//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;
void ResizeWhileOffscreen(int xsize, int ysize);
void CreateAWindow(int x, int y, int width, int height);
void InitializeApplication();
private:
vtkWinCEOpenGLRenderWindow(const vtkWinCEOpenGLRenderWindow&); // Not implemented.
void operator=(const vtkWinCEOpenGLRenderWindow&); // Not implemented.
};
#endif
|