TEST_F(CoordinateTransformableDataObject_test, TransformAppliedToVisibleBounds) { const auto coordsSpec = ReferencedCoordinateSystemSpecification( CoordinateSystemType::geographic, "testSystem", {}, {}, {}, {}); const auto targetCoordsSpec = ReferencedCoordinateSystemSpecification( CoordinateSystemType::geographic, "otherTestSystem", {}, {}, {}, {}); auto data = genPolyData<TransformedPolyData>(); data->specifyCoordinateSystem(coordsSpec); auto transform = vtkSmartPointer<vtkTransform>::New(); transform->Translate(3, 4, 5); data->setTransform(transform); const auto dataSetBounds = DataBounds(data->dataSet()->GetBounds()); const auto dataBounds = data->bounds(); const auto shiftedBounds = data->bounds().shifted(vtkVector3d(3, 4, 5)); auto rendered = data->createRendered(); rendered->setDefaultCoordinateSystem(targetCoordsSpec); const auto visibleBounds = rendered->visibleBounds(); ASSERT_EQ(dataSetBounds, dataBounds); ASSERT_EQ(shiftedBounds, visibleBounds); }
void RendererImplementationBase3D::removeFromBounds(RenderedData * renderedData, unsigned int subViewIndex) { auto & dataBounds = m_viewportSetups[subViewIndex].dataBounds; dataBounds = {}; for (auto visualization : m_renderView.visualizations(subViewIndex)) { if (visualization == renderedData) { continue; } assert(dynamic_cast<RenderedData *>(visualization)); auto rendered = static_cast<RenderedData *>(visualization); dataBounds.add(rendered->visibleBounds()); } updateAxes(); }
void RendererImplementationBase3D::updateBounds() { // TODO update only for relevant views for (size_t viewportIndex = 0; viewportIndex < m_viewportSetups.size(); ++viewportIndex) { auto & dataBounds = m_viewportSetups[viewportIndex].dataBounds; dataBounds = {}; for (auto visualization : m_renderView.visualizations(int(viewportIndex))) { assert(dynamic_cast<RenderedData *>(visualization)); auto rendered = static_cast<RenderedData *>(visualization); dataBounds.add(rendered->visibleBounds()); } } updateAxes(); }