//--------------------------------------------------------------------------- void vtkLightBoxRendererManager::vtkInternal::setupRendering() { assert(this->RenderWindow); // Remove only renderers managed by this light box for(RenderWindowItemListIt it = this->RenderWindowItemList.begin(); it != this->RenderWindowItemList.end(); ++it) { this->RenderWindow->GetRenderers()->RemoveItem((*it)->Renderer); } // Compute the width and height of each RenderWindowItem double viewportWidth = 1.0 / static_cast<double>(this->RenderWindowColumnCount); double viewportHeight = 1.0 / static_cast<double>(this->RenderWindowRowCount); // Postion of the Top-Left corner of the RenderWindowItem float xMin, yMin; // Loop through RenderWindowItem for ( int rowId = 0; rowId < this->RenderWindowRowCount; ++rowId ) { yMin = (this->RenderWindowRowCount - 1 - rowId) * viewportHeight; xMin = 0.0; for ( int columnId = 0; columnId < this->RenderWindowColumnCount; ++columnId ) { // Get reference to the renderWindowItem RenderWindowItem * item = this->RenderWindowItemList.at( this->External->ComputeRenderWindowItemId(rowId, columnId)); // Set viewport item->SetViewport(xMin, yMin, viewportWidth, viewportHeight); // Add to RenderWindow this->RenderWindow->AddRenderer(item->Renderer); // Parallel projection is needed to prevent actors from warping/tilting // when they are near the edge of the window. vtkCamera* camera = item->Renderer->GetActiveCamera(); if (camera) { camera->ParallelProjectionOn(); } xMin += viewportWidth; } } }
//--------------------------------------------------------------------------- void vtkLightBoxRendererManager::vtkInternal::setupRendering() { assert(this->RenderWindow); // Remove only renderers managed by this light box for(RenderWindowItemListIt it = this->RenderWindowItemList.begin(); it != this->RenderWindowItemList.end(); ++it) { this->RenderWindow->GetRenderers()->RemoveItem((*it)->Renderer); } // Compute the width and height of each RenderWindowItem double viewportWidth = 1.0 / static_cast<double>(this->RenderWindowColumnCount); double viewportHeight = 1.0 / static_cast<double>(this->RenderWindowRowCount); // Postion of the Top-Left corner of the RenderWindowItem float xMin, yMin; // Loop through RenderWindowItem for ( int rowId = 0; rowId < this->RenderWindowRowCount; ++rowId ) { yMin = (this->RenderWindowRowCount - 1 - rowId) * viewportHeight; xMin = 0.0; for ( int columnId = 0; columnId < this->RenderWindowColumnCount; ++columnId ) { // Get reference to the renderWindowItem RenderWindowItem * item = this->RenderWindowItemList.at( this->External->ComputeRenderWindowItemId(rowId, columnId)); // Set viewport item->SetViewport(xMin, yMin, viewportWidth, viewportHeight); // Add to RenderWindow this->RenderWindow->AddRenderer(item->Renderer); xMin += viewportWidth; } } }