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
53class vtkFloatArray;
55class vtkProp;
56class vtkCollection;
58class 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
86class VTKRENDERINGCORE_EXPORT vtkRenderWindow : public vtkWindow
87{
88public:
90 void PrintSelf(ostream& os, vtkIndent indent);
91
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
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
726protected:
729
730 virtual void DoStereoRender();
731 virtual void DoFDRender();
732 virtual void DoAARender();
733
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
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
768 int AnaglyphColorMask[2];
773
778
779private:
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 void * GetGenericContext()=0
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.
unsigned char * StereoBuffer
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
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
virtual void SetFDFrames(int fdFrames)
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 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...
virtual const char * GetRenderingBackend()
What rendering backend has the user requested.
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.
virtual const char * ReportCapabilities()
Get report of capabilities for the render window.
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.
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on,...
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.
virtual vtkRenderWindowInteractor * MakeRenderWindowInteractor()
Create an interactor to control renderers in this window.
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 float * GetZbufferData(int x, int y, int x2, int y2)=0
Set/Get the zbuffer data from the frame buffer.
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 * GetGenericWindowId()=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 * GetGenericParentId()=0
virtual void CopyResultFrame()
Performed at the end of the rendering process to generate image.
vtkRendererCollection * Renderers
virtual int SetPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front)=0
static const char * GetRenderLibrary()
What rendering library has the user requested.
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 void * GetGenericDrawable()=0
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 void * GetGenericDisplayId()=0
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 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.
vtkRendererCollection * GetRenderers()
Return the collection of renderers in the render window.
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 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()
const char * GetStereoTypeAsString()
virtual unsigned char * GetRGBACharPixelData(int x, int y, int x2, int y2, int front)=0
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