VTK
vtkRenderWindow.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkRenderWindow.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
47 #ifndef vtkRenderWindow_h
48 #define vtkRenderWindow_h
49 
50 #include "vtkRenderingCoreModule.h" // For export macro
51 #include "vtkWindow.h"
52 
53 class vtkFloatArray;
55 class vtkProp;
56 class vtkCollection;
58 class vtkRenderer;
61 
62 // lets define the different types of stereo
63 #define VTK_STEREO_CRYSTAL_EYES 1
64 #define VTK_STEREO_RED_BLUE 2
65 #define VTK_STEREO_INTERLACED 3
66 #define VTK_STEREO_LEFT 4
67 #define VTK_STEREO_RIGHT 5
68 #define VTK_STEREO_DRESDEN 6
69 #define VTK_STEREO_ANAGLYPH 7
70 #define VTK_STEREO_CHECKERBOARD 8
71 #define VTK_STEREO_SPLITVIEWPORT_HORIZONTAL 9
72 #define VTK_STEREO_FAKE 10
73 
74 #define VTK_CURSOR_DEFAULT 0
75 #define VTK_CURSOR_ARROW 1
76 #define VTK_CURSOR_SIZENE 2
77 #define VTK_CURSOR_SIZENW 3
78 #define VTK_CURSOR_SIZESW 4
79 #define VTK_CURSOR_SIZESE 5
80 #define VTK_CURSOR_SIZENS 6
81 #define VTK_CURSOR_SIZEWE 7
82 #define VTK_CURSOR_SIZEALL 8
83 #define VTK_CURSOR_HAND 9
84 #define VTK_CURSOR_CROSSHAIR 10
85 
86 class VTKRENDERINGCORE_EXPORT vtkRenderWindow : public vtkWindow
87 {
88 public:
89  vtkTypeMacro(vtkRenderWindow,vtkWindow);
90  void PrintSelf(ostream& os, vtkIndent indent);
91 
97  static vtkRenderWindow *New();
98 
102  virtual void AddRenderer(vtkRenderer *);
103 
108 
113 
117  static const char *GetRenderLibrary();
118 
122  virtual const char *GetRenderingBackend();
123 
127  vtkRendererCollection *GetRenderers() {return this->Renderers;};
128 
137 
139 
142  vtkGetMacro(CapturingGL2PSSpecialProps, int);
144 
149  virtual void Render();
150 
154  virtual void Start() = 0;
155 
159  virtual void Finalize() = 0;
160 
165  virtual void Frame() = 0;
166 
171  virtual void WaitForCompletion()=0;
172 
177  virtual void CopyResultFrame();
178 
185 
187 
193  virtual void HideCursor() = 0;
194  virtual void ShowCursor() = 0;
195  virtual void SetCursorPosition(int , int ) {}
197 
199 
202  vtkSetMacro(CurrentCursor,int);
203  vtkGetMacro(CurrentCursor,int);
205 
207 
210  virtual void SetFullScreen(int) = 0;
211  vtkGetMacro(FullScreen,int);
212  vtkBooleanMacro(FullScreen,int);
214 
216 
221  vtkSetMacro(Borders,int);
222  vtkGetMacro(Borders,int);
223  vtkBooleanMacro(Borders,int);
225 
227 
231  vtkGetMacro(StereoCapableWindow,int);
232  vtkBooleanMacro(StereoCapableWindow,int);
233  virtual void SetStereoCapableWindow(int capable);
235 
237 
240  vtkGetMacro(StereoRender,int);
241  void SetStereoRender(int stereo);
242  vtkBooleanMacro(StereoRender,int);
244 
246 
249  vtkSetMacro(AlphaBitPlanes, int);
250  vtkGetMacro(AlphaBitPlanes, int);
251  vtkBooleanMacro(AlphaBitPlanes, int);
253 
255 
259  vtkSetMacro(PointSmoothing,int);
260  vtkGetMacro(PointSmoothing,int);
261  vtkBooleanMacro(PointSmoothing,int);
263 
265 
269  vtkSetMacro(LineSmoothing,int);
270  vtkGetMacro(LineSmoothing,int);
271  vtkBooleanMacro(LineSmoothing,int);
273 
275 
279  vtkSetMacro(PolygonSmoothing,int);
280  vtkGetMacro(PolygonSmoothing,int);
281  vtkBooleanMacro(PolygonSmoothing,int);
283 
285 
303  vtkGetMacro(StereoType,int);
304  vtkSetMacro(StereoType,int);
306  {this->SetStereoType(VTK_STEREO_CRYSTAL_EYES);}
308  {this->SetStereoType(VTK_STEREO_RED_BLUE);}
310  {this->SetStereoType(VTK_STEREO_INTERLACED);}
312  {this->SetStereoType(VTK_STEREO_LEFT);}
314  {this->SetStereoType(VTK_STEREO_RIGHT);}
316  {this->SetStereoType(VTK_STEREO_DRESDEN);}
318  {this->SetStereoType(VTK_STEREO_ANAGLYPH);}
320  {this->SetStereoType(VTK_STEREO_CHECKERBOARD);}
322  {this->SetStereoType(VTK_STEREO_SPLITVIEWPORT_HORIZONTAL);}
324  {this->SetStereoType(VTK_STEREO_FAKE);}
326 
327  const char *GetStereoTypeAsString();
328 
333  virtual void StereoUpdate();
334 
339  virtual void StereoMidpoint();
340 
345  virtual void StereoRenderComplete();
346 
348 
355  vtkSetClampMacro(AnaglyphColorSaturation,float, 0.0f, 1.0f);
356  vtkGetMacro(AnaglyphColorSaturation,float);
358 
360 
374  vtkSetVector2Macro(AnaglyphColorMask,int);
375  vtkGetVectorMacro(AnaglyphColorMask,int,2);
377 
383  virtual void WindowRemap() = 0;
384 
386 
389  vtkSetMacro(SwapBuffers,int);
390  vtkGetMacro(SwapBuffers,int);
391  vtkBooleanMacro(SwapBuffers,int);
393 
395 
407  virtual int SetPixelData(int x, int y, int x2, int y2, unsigned char *data,
408  int front) = 0;
409  virtual int SetPixelData(int x, int y, int x2, int y2,
410  vtkUnsignedCharArray *data, int front) = 0;
412 
414 
421  virtual float *GetRGBAPixelData(int x, int y, int x2, int y2, int front) = 0;
422  virtual int GetRGBAPixelData(int x, int y, int x2, int y2, int front,
423  vtkFloatArray *data) = 0;
424  virtual int SetRGBAPixelData(int x, int y, int x2, int y2, float *,
425  int front, int blend=0) = 0;
426  virtual int SetRGBAPixelData(int, int, int, int, vtkFloatArray*,
427  int, int blend=0) = 0;
428  virtual void ReleaseRGBAPixelData(float *data)=0;
429  virtual unsigned char *GetRGBACharPixelData(int x, int y, int x2, int y2,
430  int front) = 0;
431  virtual int GetRGBACharPixelData(int x, int y, int x2, int y2, int front,
433  virtual int SetRGBACharPixelData(int x,int y, int x2, int y2,
434  unsigned char *data, int front,
435  int blend=0) = 0;
436  virtual int SetRGBACharPixelData(int x, int y, int x2, int y2,
437  vtkUnsignedCharArray *data, int front,
438  int blend=0) = 0;
440 
442 
447  virtual float *GetZbufferData(int x, int y, int x2, int y2) = 0;
448  virtual int GetZbufferData(int x, int y, int x2, int y2, float *z) = 0;
449  virtual int GetZbufferData(int x, int y, int x2, int y2,
450  vtkFloatArray *z) = 0;
451  virtual int SetZbufferData(int x, int y, int x2, int y2, float *z) = 0;
452  virtual int SetZbufferData(int x, int y, int x2, int y2,
453  vtkFloatArray *z) = 0;
454  float GetZbufferDataAtPoint(int x, int y)
455  {
456  float value;
457  this->GetZbufferData(x, y, x, y, &value);
458  return value;
459  }
461 
463 
468  vtkGetMacro(AAFrames,int);
469  vtkSetMacro(AAFrames,int);
471 
473 
480  vtkGetMacro(FDFrames,int);
481  virtual void SetFDFrames (int fdFrames);
483 
485 
492  vtkGetMacro(UseConstantFDOffsets,int);
493  vtkSetMacro(UseConstantFDOffsets,int);
495 
497 
505  vtkGetMacro(SubFrames,int);
506  virtual void SetSubFrames(int subFrames);
508 
510 
513  vtkGetMacro(NeverRendered,int);
515 
517 
521  vtkGetMacro(AbortRender,int);
522  vtkSetMacro(AbortRender,int);
523  vtkGetMacro(InAbortCheck,int);
524  vtkSetMacro(InAbortCheck,int);
525  virtual int CheckAbortStatus();
527 
528  vtkGetMacro(IsPicking,int);
529  vtkSetMacro(IsPicking,int);
530  vtkBooleanMacro(IsPicking,int);
531 
538  virtual int GetEventPending() = 0;
539 
543  virtual int CheckInRenderStatus() { return this->InRender; }
544 
548  virtual void ClearInRenderStatus() { this->InRender = 0; }
549 
551 
559  virtual void SetDesiredUpdateRate(double);
560  vtkGetMacro(DesiredUpdateRate,double);
562 
564 
570  vtkGetMacro(NumberOfLayers, int);
571  vtkSetClampMacro(NumberOfLayers, int, 1, VTK_INT_MAX);
573 
575 
578  vtkGetObjectMacro(Interactor,vtkRenderWindowInteractor);
580 
585 
590  virtual void UnRegister(vtkObjectBase *o);
591 
593 
596  virtual void SetDisplayId(void *) = 0;
597  virtual void SetWindowId(void *) = 0;
598  virtual void SetNextWindowId(void *) = 0;
599  virtual void SetParentId(void *) = 0;
600  virtual void *GetGenericDisplayId() = 0;
601  virtual void *GetGenericWindowId() = 0;
602  virtual void *GetGenericParentId() = 0;
603  virtual void *GetGenericContext() = 0;
604  virtual void *GetGenericDrawable() = 0;
605  virtual void SetWindowInfo(char *) = 0;
606  virtual void SetNextWindowInfo(char *) = 0;
607  virtual void SetParentInfo(char *) = 0;
609 
614  virtual bool InitializeFromCurrentContext() { return false; };
615 
620  virtual void MakeCurrent() = 0;
621 
626  virtual bool IsCurrent()=0;
627 
634  virtual bool IsDrawable(){ return true; }
635 
641  virtual void SetForceMakeCurrent() {}
642 
646  virtual const char *ReportCapabilities() { return "Not Implemented";};
647 
651  virtual int SupportsOpenGL() { return 0;};
652 
656  virtual int IsDirect() { return 0;};
657 
662  virtual int GetDepthBufferSize() = 0;
663 
668  virtual int GetColorBufferSizes(int *rgba) = 0;
669 
671 
676  vtkGetObjectMacro(PainterDeviceAdapter, vtkPainterDeviceAdapter);
678 
680 
683  vtkSetMacro(MultiSamples,int);
684  vtkGetMacro(MultiSamples,int);
686 
688 
691  vtkSetMacro(StencilCapable, int);
692  vtkGetMacro(StencilCapable, int);
693  vtkBooleanMacro(StencilCapable, int);
695 
697 
703  vtkSetMacro(DeviceIndex,int);
704  vtkGetMacro(DeviceIndex,int);
706 
710  virtual int GetNumberOfDevices()
711  {
712  return 0;
713  }
714 
723  virtual int SetUseOffScreenBuffers(bool) { return 0; }
724  virtual bool GetUseOffScreenBuffers() { return false; }
725 
726 protected:
729 
730  virtual void DoStereoRender();
731  virtual void DoFDRender();
732  virtual void DoAARender();
733 
736  int Borders;
738  int OldScreen[5];
744  int StereoStatus; // used for keeping track of what's going on
748  unsigned char* StereoBuffer; // used for red blue stereo
749  float *AccumulationBuffer; // used for many techniques
751  int AAFrames;
752  int FDFrames;
753  int UseConstantFDOffsets; // to use the same offsets at each rendering
754  double *ConstantFDOffsets[2];
755  int SubFrames; // number of sub frames
756  int CurrentSubFrame; // what one are we on
757  unsigned char *ResultFrame; // used for any non immediate rendering
762  int InRender;
768  int AnaglyphColorMask[2];
773 
778 
779 private:
780  vtkRenderWindow(const vtkRenderWindow&) VTK_DELETE_FUNCTION;
781  void operator=(const vtkRenderWindow&) VTK_DELETE_FUNCTION;
782 };
783 
784 #endif
create and manipulate unsorted lists of objects
Definition: vtkCollection.h:52
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:42
a simple class to control print indentation
Definition: vtkIndent.h:40
abstract base class for most VTK objects
Definition: vtkObjectBase.h:66
An adapter between a vtkPainter and a rendering device.
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:48
platform-independent render window interaction including picking and frame rate control.
create a window for renderers to draw into
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
virtual void SetNextWindowInfo(char *)=0
void SetStereoTypeToDresden()
virtual void SetDesiredUpdateRate(double)
Set/Get the desired update rate.
virtual int SetZbufferData(int x, int y, int x2, int y2, vtkFloatArray *z)=0
virtual void Render()
Ask each renderer owned by this RenderWindow to render its image and synchronize this process.
static const char * GetRenderLibrary()
What rendering library has the user requested.
unsigned char * StereoBuffer
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
virtual void * GetGenericWindowId()=0
vtkRendererCollection * GetRenderers()
Return the collection of renderers in the render window.
virtual bool IsDrawable()
Test if the window has a valid drawable.
void SetStereoTypeToRedBlue()
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
unsigned char * ResultFrame
virtual void WaitForCompletion()=0
Block the thread until the actual rendering is finished().
vtkPainterDeviceAdapter * PainterDeviceAdapter
const char * GetStereoTypeAsString()
virtual void SetFDFrames(int fdFrames)
virtual int SetRGBAPixelData(int, int, int, int, vtkFloatArray *, int, int blend=0)=0
void SetInteractor(vtkRenderWindowInteractor *)
Set the interactor to the render window.
virtual void HideCursor()=0
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
double AbortCheckTime
The universal time since the last abort check occurred.
virtual void ReleaseRGBAPixelData(float *data)=0
virtual void AddRenderer(vtkRenderer *)
Add a renderer to the list of renderers.
vtkRenderWindowInteractor * Interactor
void SetStereoTypeToFake()
virtual void SetWindowInfo(char *)=0
float AnaglyphColorSaturation
virtual void SetStereoCapableWindow(int capable)
void SetStereoTypeToInterlaced()
virtual int GetDepthBufferSize()=0
This method should be defined by the subclass.
virtual void * GetGenericDisplayId()=0
virtual void SetParentInfo(char *)=0
void CaptureGL2PSSpecialProps(vtkCollection *specialProps)
The GL2PS exporter must handle certain props in a special way (e.g.
virtual int SetRGBAPixelData(int x, int y, int x2, int y2, float *, int front, int blend=0)=0
float GetZbufferDataAtPoint(int x, int y)
virtual void StereoRenderComplete()
Handles work required once both views have been rendered when using stereo rendering.
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on,...
virtual void SetParentId(void *)=0
void SetStereoTypeToLeft()
virtual int GetColorBufferSizes(int *rgba)=0
Get the size of the color buffer.
virtual void DoAARender()
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
virtual void DoStereoRender()
virtual void ClearInRenderStatus()
Clear status (after an exception was thrown for example)
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, unsigned char *data, int front, int blend=0)=0
virtual bool GetUseOffScreenBuffers()
virtual vtkRenderWindowInteractor * MakeRenderWindowInteractor()
Create an interactor to control renderers in this window.
virtual int GetRGBACharPixelData(int x, int y, int x2, int y2, int front, vtkUnsignedCharArray *data)=0
virtual void SetSubFrames(int subFrames)
virtual void UnRegister(vtkObjectBase *o)
This Method detects loops of RenderWindow<->Interactor, so objects are freed properly.
float * AccumulationBuffer
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
virtual void Finalize()=0
Finalize the rendering process.
virtual void * GetGenericContext()=0
virtual int CheckAbortStatus()
virtual void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
void SetStereoTypeToCheckerboard()
virtual int GetZbufferData(int x, int y, int x2, int y2, float *z)=0
virtual int SupportsOpenGL()
Does this render window support OpenGL? 0-false, 1-true.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void StereoUpdate()
Update the system, if needed, due to stereo rendering.
void SetStereoTypeToAnaglyph()
virtual void CopyResultFrame()
Performed at the end of the rendering process to generate image.
virtual void * GetGenericDrawable()=0
vtkRendererCollection * Renderers
virtual int SetPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front)=0
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front, int blend=0)=0
void RemoveRenderer(vtkRenderer *)
Remove a renderer from the list of renderers.
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
virtual int SetZbufferData(int x, int y, int x2, int y2, float *z)=0
virtual void WindowRemap()=0
Remap the rendering window.
virtual void SetCursorPosition(int, int)
virtual void StereoMidpoint()
Intermediate method performs operations required between the rendering of the left and right eye.
virtual unsigned char * GetRGBACharPixelData(int x, int y, int x2, int y2, int front)=0
virtual const char * ReportCapabilities()
Get report of capabilities for the render window.
void SetStereoTypeToSplitViewportHorizontal()
int HasRenderer(vtkRenderer *)
Query if a renderer is in the list of renderers.
virtual int GetNumberOfDevices()
Returns the number of devices (graphics cards) on a system.
virtual float * GetZbufferData(int x, int y, int x2, int y2)=0
Set/Get the zbuffer data from the frame buffer.
virtual int SetUseOffScreenBuffers(bool)
Create and bind offscreen rendering buffers without destroying the current OpenGL context.
virtual void SetWindowId(void *)=0
virtual int SetPixelData(int x, int y, int x2, int y2, unsigned char *data, int front)=0
Set/Get the pixel data of an image, transmitted as RGBRGBRGB.
virtual void * GetGenericParentId()=0
virtual void ShowCursor()=0
virtual void SetNextWindowId(void *)=0
void SetStereoTypeToCrystalEyes()
virtual void SetDisplayId(void *)=0
Dummy stubs for vtkWindow API.
virtual void Start()=0
Initialize the rendering process.
virtual int GetRGBAPixelData(int x, int y, int x2, int y2, int front, vtkFloatArray *data)=0
void SetStereoRender(int stereo)
virtual float * GetRGBAPixelData(int x, int y, int x2, int y2, int front)=0
Same as Get/SetPixelData except that the image also contains an alpha component.
virtual int GetZbufferData(int x, int y, int x2, int y2, vtkFloatArray *z)=0
void SetStereoTypeToRight()
virtual int CheckInRenderStatus()
Are we rendering at the moment.
unsigned int AccumulationBufferSize
virtual void DoFDRender()
virtual const char * GetRenderingBackend()
What rendering backend has the user requested.
abstract specification for renderers
Definition: vtkRenderer.h:64
dynamic, self-adjusting array of unsigned char
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
@ value
Definition: vtkX3D.h:220
@ data
Definition: vtkX3D.h:315
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
#define VTK_STEREO_ANAGLYPH
#define VTK_STEREO_SPLITVIEWPORT_HORIZONTAL
#define VTK_STEREO_DRESDEN
#define VTK_STEREO_CHECKERBOARD
#define VTK_STEREO_CRYSTAL_EYES
#define VTK_STEREO_RIGHT
#define VTK_STEREO_FAKE
#define VTK_STEREO_RED_BLUE
#define VTK_STEREO_INTERLACED
#define VTK_STEREO_LEFT
#define VTK_INT_MAX
Definition: vtkType.h:153