You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
6.2 KiB
206 lines
6.2 KiB
/*=========================================================================
|
|
|
|
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
|
|
|
|
|