1 /*========================================================================= 2 3 Program: Visualization Toolkit 4 Module: vtkWindowNode.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 =========================================================================*/ 15 /** 16 * @class vtkWindowNode 17 * @brief vtkViewNode specialized for vtkRenderWindows 18 * 19 * State storage and graph traversal for vtkRenderWindow 20 */ 21 22 #ifndef vtkWindowNode_h 23 #define vtkWindowNode_h 24 25 #include "vtkRenderingSceneGraphModule.h" // For export macro 26 #include "vtkViewNode.h" 27 28 class vtkUnsignedCharArray; 29 class vtkFloatArray; 30 31 class VTKRENDERINGSCENEGRAPH_EXPORT vtkWindowNode : public vtkViewNode 32 { 33 public: 34 static vtkWindowNode* New(); 35 vtkTypeMacro(vtkWindowNode, vtkViewNode); 36 void PrintSelf(ostream& os, vtkIndent indent) override; 37 38 /** 39 * Build containers for our child nodes. 40 */ 41 void Build(bool prepass) override; 42 43 /** 44 * Get state of my renderable. 45 */ 46 void Synchronize(bool prepass) override; 47 48 /** 49 * Return the size of the last rendered image 50 */ GetSize()51 virtual int* GetSize() { return this->Size; } 52 53 /** 54 * Get the most recent color buffer RGBA 55 */ GetColorBuffer()56 virtual vtkUnsignedCharArray* GetColorBuffer() { return this->ColorBuffer; } 57 58 /** 59 * Get the most recent zbuffer buffer 60 */ GetZBuffer()61 virtual vtkFloatArray* GetZBuffer() { return this->ZBuffer; } 62 63 protected: 64 vtkWindowNode(); 65 ~vtkWindowNode() override; 66 67 // TODO: use a map with string keys being renderable's member name 68 // state 69 int Size[2]; 70 71 // stores the results of a render 72 vtkUnsignedCharArray* ColorBuffer; 73 vtkFloatArray* ZBuffer; 74 75 private: 76 vtkWindowNode(const vtkWindowNode&) = delete; 77 void operator=(const vtkWindowNode&) = delete; 78 }; 79 80 #endif 81