/*========================================================================= Program: Visualization Toolkit Module: vtkWindowNode.cxx 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. =========================================================================*/ #include "vtkWindowNode.h" #include "vtkCollectionIterator.h" #include "vtkFloatArray.h" #include "vtkObjectFactory.h" #include "vtkRenderWindow.h" #include "vtkRenderer.h" #include "vtkRendererCollection.h" #include "vtkRendererNode.h" #include "vtkUnsignedCharArray.h" //============================================================================ vtkStandardNewMacro(vtkWindowNode); //------------------------------------------------------------------------------ vtkWindowNode::vtkWindowNode() { this->Size[0] = 0; this->Size[1] = 0; this->ColorBuffer = vtkUnsignedCharArray::New(); this->ZBuffer = vtkFloatArray::New(); } //------------------------------------------------------------------------------ vtkWindowNode::~vtkWindowNode() { this->ColorBuffer->Delete(); this->ColorBuffer = nullptr; this->ZBuffer->Delete(); this->ZBuffer = nullptr; } //------------------------------------------------------------------------------ void vtkWindowNode::PrintSelf(ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os, indent); } //------------------------------------------------------------------------------ void vtkWindowNode::Build(bool prepass) { if (prepass) { vtkRenderWindow* mine = vtkRenderWindow::SafeDownCast(this->GetRenderable()); if (!mine) { return; } this->PrepareNodes(); this->AddMissingNodes(mine->GetRenderers()); this->RemoveUnusedNodes(); } } //------------------------------------------------------------------------------ void vtkWindowNode::Synchronize(bool prepass) { if (prepass) { vtkRenderWindow* mine = vtkRenderWindow::SafeDownCast(this->GetRenderable()); if (!mine) { return; } /* GetAAFrames() vtkRenderWindow virtual GetActualSize() vtkWindow GetAlphaBitPlanes() vtkRenderWindow virtual GetDoubleBuffer() vtkWindow virtual GetDPI() vtkWindow virtual GetFDFrames() vtkRenderWindow virtual GetFullScreen() vtkRenderWindow virtual GetLineSmoothing() vtkRenderWindow virtual GetMapped() vtkWindow virtual GetMTime() vtkObject virtual GetMultiSamples() vtkRenderWindow virtual GetNeverRendered() vtkRenderWindow virtual GetNumberOfLayers() vtkRenderWindow virtual GetOffScreenRendering() vtkWindow virtual GetPointSmoothing() vtkRenderWindow virtual GetPolygonSmoothing() vtkRenderWindow virtual GetPosition() vtkWindow virtual GetScreenSize()=0 vtkWindow pure virtual */ const int* sz = mine->GetSize(); this->Size[0] = sz[0]; this->Size[1] = sz[1]; /* GetStereoType() vtkRenderWindow virtual GetSubFrames() vtkRenderWindow virtual GetSwapBuffers() vtkRenderWindow virtual GetTileScale() vtkWindow virtual GetTileViewport() vtkWindow virtual GetUseConstantFDOffsets() vtkRenderWindow virtual */ auto const& renderers = this->GetChildren(); for (auto ren : renderers) { vtkRendererNode* child = vtkRendererNode::SafeDownCast(ren); child->SetSize(this->Size); } } }